PDA

View Full Version : سوال: select all در فایرمانکی



ابوالفضل عباسی
یک شنبه 05 اردیبهشت 1395, 07:40 صبح
با سلام
چطور میشه تمام محتویات یک edit رو موقع رخداد Enter انتخاب کرد؟
یعنی موفع onEnter یک edit در فایرمانکی.
edit1.selectall
جواب نمی دهد.
(با عرض پوزش بخاطر سوال مبتدی ام)

Mahmood_M
سه شنبه 07 اردیبهشت 1395, 06:58 صبح
دستور SelectAll رو در OnClick بنویسید

ابوالفضل عباسی
سه شنبه 07 اردیبهشت 1395, 10:59 صبح
چه عجب یکی جواب مارو داد.
دوست عزیز در فرمان select all در هیچ کدام از event ها کار نمی کند.:ناراحت:(نه setfocus و نه select all)
نمی دانم چرا.در سایت stack over flow هم کسی جواب من رو نداد.

Mahmood_M
سه شنبه 07 اردیبهشت 1395, 12:51 عصر
دستور SelectAll در همه Event ها عمل می کنه اما باید توجه کنید که Click موس بعد از OnEnter انجام میشه، یعنی با OnEnter انتخاب متن انجام میشه و بعدش با کلیک موس از حالت انتخاب خارج میشه
اگر Edit شما Focus داشته باشه و روش کلیک کنید، OnEnter اجرا نمیشه
اگر هدف اینه که وقتی کاربر وارد Edit شد متن انتخاب بشه، می تونید توی OnClick دستور SelectAll رو بنویسید
اما استفاده از OnClick یک مشکل داره و اون اینکه کاربر هر بار روی متن کلیک کنه، متن انتخاب میشه، نه فقط در زمان ورود به Edit
برای حل این مشکل یک متغیر عمومی از نوع Boolean تعریف کنید مثلا به نام Entered ، در رویداد OnEnter مربوط به Edit اون رو True کنید و در رویداد OnClick مربوط به Edit ، با شرط True بودن این متغیر، دستور SelectAll رو اجرا کنید، مثال :

var
Form1: TForm1;
Entered : Boolean = False;

implementation

{$R *.fmx}

procedure TForm1.Edit1Click(Sender: TObject);
begin
if Entered then
begin
Edit1.SelectAll;
Entered := False;
end;
end;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
Entered := True;
end;
همونطور که گفتم اگر Edit موردنظر Focus شده باشه OnEnter اجرا نمیشه
وقتی کاربر برای اولین بار وارد شد، متن انتخاب میشه، بعدش Entered برابر False میشه که با کلیک های بعدی متن انتخاب نشه تا زمانی که از Edit خارج بشه که اگر باز دوباره وارد Edit شد، OnEnter اتفاق می افته و متغیر ما True میشه و متن هم انتخاب خواهد شد
این موضوع ربطی به FireMonkey نداره، بلکه به ترتیب اجرای Event ها باید توجه کنید

ابوالفضل عباسی
چهارشنبه 08 اردیبهشت 1395, 03:44 صبح
باتشکر از Mahmood_M.
این هایی که شما می فرمایید در VCL درست انجام میشه،اما در مولتی دیوایس فایرمانکی در ویندوز انجام نمیشه در اندروید که دیگه هیچی.
ولی با یه thread مشکل رو حل کردم.در ویندوز درست نشد،ولی در اندروید درست شد که من با اندروید بیشتر کار داشتم.
بازم ممنون.

Mahmood_M
چهارشنبه 08 اردیبهشت 1395, 06:29 صبح
باتشکر از Mahmood_M.
این هایی که شما می فرمایید در VCL درست انجام میشه،اما در مولتی دیوایس فایرمانکی در ویندوز انجام نمیشه در اندروید که دیگه هیچی.
ولی با یه thread مشکل رو حل کردم.در ویندوز درست نشد،ولی در اندروید درست شد که من با اندروید بیشتر کار داشتم.
بازم ممنون.
پروژه های نمونه ضمیمه شد
پروژه ی دسکتاپ شامل فایل اجرایی هم هست
پروژه ی اندروید در Device واقعی هم تست شده
ساخته شده در Delphi XE6