View Full Version : سوال: چطور کلید تب را در Memo شبیه سازی کنم؟
  
hp1361
سه شنبه 10 مهر 1386, 21:56 عصر
سلام
دوستان همونطور که میدونید با True  کردن property tabwant در Memo  متونیم تب رو در داخل خود ممو فعال کنیم و فاصله هایی رو ایجاد کنیم . 
من واسه برنامه ام نیاز دارم که کاربر این کار رو با فشار دادن دکمه F5  انجام بده و در اخر هر کدوم از این تب ها یک شماره قرار بده(البته شماره ها به ترتیب زیاد میشن)
حالا چیکار کنم ؟
یه همچین چیزی
1-          2-          3-          4-          5-          6-
7-          8-          9-          10-          ووو...
(البته بین این اعداد فاصله 8 کاراکتری تب قرار داره)
ممنون و منتظرم
ghabil
سه شنبه 10 مهر 1386, 23:47 عصر
کار قشنگ اینه که از Memo یک کلاس درایو کنی و Counter رو بصورت پراپرتی بزاری توش ، اما اگر کارت دم دستیه این کارتو راه میندازه :
var
  Form1: TForm1;
  GlobalCounter: Integer = 0;
implementation
{$R *.dfm}
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key= 116{F5} then 
  begin 
    Inc(GlobalCounter);
    Memo1.Text := Memo1.Lines.Text + IntToStr(GlobalCounter) + '-       ';
  end;
end;
ضمنا F5 و کلا همه کلیدها یک Constant دارند که الان یادم نبود پیشوندش چی بود ، بهتره از Constant بجای کدش(116) استفاده کنی
hp1361
چهارشنبه 11 مهر 1386, 02:17 صبح
سلام مجدد
قابیل جان دستت درد نکنه ایول
راستی اعداد که اضافه میشن مکان نما به اخر خط  نمیره چیکارش کنم ؟
حالا اگه کاربر یکی از اعداد رو پاک کرد اونوقت ادامه اعداد با فشار دادن F5 تایپ میشه و اون عدد پاک شده دیگه تو لیست نخواهد بود واسه تشخیص اون چه پیشنهادی میدین
ممنون
ghabil
چهارشنبه 11 مهر 1386, 11:55 صبح
ولی این کد اگر کاربر  توی متنی که جلوی اعداد مینویسه بزنه مثلا  -5 یا هر عدد دیگه ای درست کار نمیکنه.
procedure TForm1.CheckCounterIsValid;
begin
  if (Pos(IntToStr(GlobalCounter)+ '-', Memo1.Text) < 1) and (GlobalCounter > 0) then
  begin
    Dec(GlobalCounter);
    CheckCounterIsValid;
  end;
end;
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key= 116{F5} then
  begin
    CheckCounterIsValid;
    Inc(GlobalCounter);
    Memo1.Text := Memo1.Lines.Text + IntToStr(GlobalCounter) + '-       ';
    Memo1.SelStart := Length(Memo1.Text);
  end;
end;
hp1361
چهارشنبه 11 مهر 1386, 17:21 عصر
سلام
اگه بخوام این شماره ها مثل ورد که Tabstop داره در اون موقعیت ها قرار بگیرن چیکار کنم ؟
یعنی بعد از درج عدد و تایپ مطالبی از طرف کاربر یک تب اعمال بشه و بعد عدد جدید درج بشه؟
ممنون و منتظرم
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.