سلام بر آقا سجاد گل
1- چطور میتونم اطلاعاتی رو که از دیتا بیس داخل اینپوتها فراخوانی کرده ام رو با فشردن فقط یک دگمه که وارد دیالوگ از قبل طراحی شده (مانند یک صفحه نامه اداره خاصی) میشه رو دوباره تو اینپوتهای دلخواه داخل دیالوگ مورد نظر دوباره فراخوانی کنم(برای پرینت)؟
و اگه راه حل دیگه ای برای پرینت اطلاعات فراخوانی شده از دیتابیس در صفحه از قبل طراحی شده ای هم وجود داره لطفا راهنمایی بفرمائید؟
سلام بر شما
میتونید و اصولی اش هم اینه که از درون دیتابیس مجددا بخونید .
اما از اونجایی که متغییرها و آرایه های لوا و اتوپلی ، بصورت پیش فرض ، بصورت سراسری تعریف میشه و در همه جا در دسترس هست ، قبل از باز کردن دیالوگ ، میتونید اطلاعاتی که نیاز دارین را از اینتپوت های مورد نظرتون بخونید و در اون آرایه ذخیره کنید و مجددا اطلاعات اون آرایه را از صفحه ی دیالوگ مورد نظر ، بخونید .
مثلا در رویداد کلیک از دکمه ای از صفحه ی اصلی ای که شامل کنترل Input1 هست (که این Input1 هم شامل نوشته ای هست) :
کد:
a = Input.GetText("Input1");
و در رویداد on show در دیالوگ :
کد:
result = Dialog.Message("Notice", a, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
حالا شما بجای متغییر ، میتونید از آرایه استفاده کنید اما اصولی اش اینه که بجای ذخیره در متغییر یا آرایه ، از همون دیتابیس مجددا اطلاعات تون را بخونید .
و اگه راه حل دیگه ای برای پرینت اطلاعات فراخوانی شده از دیتابیس در صفحه از قبل طراحی شده ای هم وجود داره لطفا راهنمایی بفرمائید؟
در محیط ها و زبان های دیگه اگه بود ، کنترلی بنام report viewer دارن اما در اتوپلی بعید میدونم همچین کنترلی یا پلاگینی براش وجود داشته باشه . نمیدونم .
2-چطور میتونم یه اینپوت رو با نوشته داخلش تو صفحه 90 درجه به چپ یا راست کجش کنم؟
هیچ جوری در خود اتوپلی بصورت مستقیم نمیشه .
مگر اینکه توابع api مربوط به ویندوز درباره ی کار با کنترل های پیشرفته را بدونین و بخواین از ابتدا برای خودتون کنترلی در اتوپلی طراحی کنید که کار بسیار بسیار پیچیده ای هست .
راحت ترین روش اش اینه که در زبان ها و محیط های دیگه ای که این قابلیت را دارن ، dll ای درست کنید و از کنترل های اون زبان ها در اتوپلی استفاده کنید (البته من این حالت را در اتوپلی توسط dll تست نکردم . چون چرخوندن یک کنترل ، علاوه بر قابلیت های اون محیط ، شاید به چیزهای دیگه هم وابسته باشه . نمیدونم ولی به احتمال زیاد ، شدنی هست) .
اما از این جور قابلیت ها را اگه نیاز دارین (و حتی قابلیت های بیشتر مثل سئوال اول تون) ، سعی کنید روی محیط و زبان های دیگه کار کنید (مثل زبان سی شارپ و wpf) . اتوپلی قابلیت های بسیار بسیار ضعیفی داره و ارزش وقت گذاشتن برای یادگیری را نداره .
3- چگونه میتوان کاری کرد که اولا نوشته داخل کمبوباکس مانند زبان فارسی به طرف راست بچسبد نه چپ و
قبلا در آموزش توضیح داده شد .
باید با توابع api در ویندوز کار کنید .
اگه منظورتون فقط پنجره ی text box در کنترل کمبوباکس هست (اون پنجره و بخشی از کمبوباکس که متن را مینویسید) (نیاز به پلاگین MemoryEx داره) :
کد:
hComboBox = ComboBox.GetProperties("ComboBox1").WindowHandle;
GWL_EXSTYLE = -20;
WS_EX_LAYOUTRTL = 0x00400000;
hLibrary = Library.Load("User32.dll", false);
if (hLibrary == nil or hComboBox == 0) then
return;
end
hLibrary.SetWindowLongA( hComboBox, GWL_EXSTYLE, WS_EX_LAYOUTRTL);
hLibrary:Close_();
این مسائلی که در آموزش ، در بخش api ویندوز (و پلاگین های MemoryEx.Load و ...) گفته شد .
اگه منظورتون پنجره ی لیست باکس در کنترل کمبوباکس هم هست ، علاوه بر کد بالا ، باید هندل پنجره ی مربوط به لیست باکسِ کنترل کمبوباکس را بدست بیارید و کد بالا را علاوه بر این ، روی این پنجره ی مربوط به لیست باکسِ کنترل کمبوباکس هم اعمال کنید . اما بدست آوردنش پیچیدگی بیشتری داره . شاید پلاگین های دیگه مثل پلاگین winapi ، بتونه کمک تون کنه ولی من این کار را نکردم و دقیق نمیدونم .
ثانیا اینکه در حالیکه مثلا در کمبو باکس 500 تا آیتم نوشته ایم موقع نوشتن یکی دو حرف داخل آن، کلمه و آیتم مورد نظر دیده شود بدون آنکه لیست را با موس باز کنیم یعنی تقریبا مشابه جستجو در جدول عمل کند؟
اگه منظورتون جستجو در کمبوباکس هست ، عملکردش شبیه جستجو در لیست باکس هست که در قسمت 20 گفته شد .
اما درباره ی اینکه "کلمه و آیتم مورد نظر دیده شود بدون آنکه لیست را با موس باز کنیم" که همون expansion هست ، کنترل کمبوباکس پیش فرض اتوپلی ، بعید میدونم همچین چیزی داشته باشه . یا باید از api ویندوز استفاده کنید (که کار سختیه) و یا قضیه ی همون dll که در زبان های دیگه اون کنترل تون را درست و در اتوپلی استفاده کنید .
و اینکه چگونه و با کدام کد با زدن دگمه اینتر از کمبوباکس به اینپوت دلخواه سوئیچ شود و بالعکس یعنی مثلا با زدن دگمه اینتر از اینپوت 2 به کمبوباکس 1 و باز با زدن اینتر از کمبوباکس 1 به اینپوت 3 سوئیچ شود(البته کد سوئیچ شدن از یک اینپوت به اینپوت دیگه رو با زدن دگمه اینتر میدونم)؟
تابع Page.SetFocus
در رابطه با سوال اول
بنده 7 صفحه از نوع دیالوگ برای پرینت طراحی کرده ام و میخواهم در on show دیالوگها کدی بنویسم تا وقتی که از صفحه و پیجی که حاوی اطلاعات فراخوانی شده از دیتابیس است(فرا خوانی شده در داخل اینپوتها) با زدن یک دگمه و به محض ورود به دیالوگها. پشت سرهم آیتم های دلخواه فراخوانی شده از پیج اول ، در داخل اینپوتهای دلخواه دیالوگها قرار گرفته و پرینت شوند
همونجا جواب دادم .