View Full Version : چطور میشه برای دو Memo از یک Scrollbox استفاده کرد؟
عقاب سیاه
سه شنبه 08 فروردین 1391, 17:27 عصر
درود
فکر کنم عنوان گویا هست
من قصد درام با یک Scrollbar که وسط دو تا Memo قرار می دم بتونم هر دو را کنترل کنم!
ممنون
Felony
سه شنبه 08 فروردین 1391, 18:22 عصر
Scrollbox رو چه طور بین دو تا Memo قرار میدید ؟! برای استفاده از ScrollBox باید شئ مورد نظر رو داخلش قرار بدید ، منظورتون ScrollBar هست ؟
عقاب سیاه
سه شنبه 08 فروردین 1391, 18:22 عصر
بله ببخشید!
Felony
سه شنبه 08 فروردین 1391, 18:58 عصر
کد زیر رو تو رویداد OnCreate فرمتون بنویسید :
var
h1, h2: Integer;
begin
h1 := Canvas.TextHeight(Memo1.Lines[0]);
h2 := (Memo1.ClientRect.Bottom - Memo1.ClientRect.Top) div h1;
ScrollBar1.Max := Memo1.Lines.Count - h2 + 1;
ScrollBar1.LargeChange := h2;
end;
و کد زیر رو تو رویداد OnScroll شی ScrollBar مورد نظر :
var
wparam: Integer;
begin
case ScrollCode of
scLineUp:
wparam := SB_LINEUP;
scLineDown:
wparam := SB_LINEDOWN;
scPageUp:
wparam := SB_PAGEUP;
scPageDown:
wparam := SB_PAGEDOWN;
scPosition:
begin
wparam := ScrollPos - SendMessage(Memo1.Handle,
EM_GETFIRSTVISIBLELINE, 0, 0);
PostMessage(Memo1.Handle, em_LineScroll, 0, wparam);
PostMessage(Memo2.Handle, em_LineScroll, 0, wparam);
Exit;
end;
else
Exit;
end;
PostMessage(Memo1.Handle, em_Scroll, wparam, 0);
PostMessage(Memo2.Handle, em_Scroll, wparam, 0);
end;
عقاب سیاه
سه شنبه 08 فروردین 1391, 19:03 عصر
ممنون
دیدم اون دکمه ی تشکر کوچولو کافی نیست گفتم به تشکــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــــر بزرگ بکنم!
بعد مثلا ار این حور مسائل چجوری راه حل را میشه فهمید؟ مثلا شما از کجا می دونستید باید از em_LineScroll استفاده کرد و ... ؟
Beginner2013
سه شنبه 08 فروردین 1391, 19:17 عصر
من می خواستم این کارو با یه روش دیگه انجام بدم،به نظر شما ایراد این کد کجاست؟
var
p:Integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
p:=ScrollBar1.Position;
end;
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
if ScrollBar1.Position>p then
begin
memo1.ScrollBy(0,-1);
memo2.ScrollBy(0,-1);
p:= ScrollBar1.Position;
end
else
begin
memo1.ScrollBy(0,1);
memo2.ScrollBy(0,1);
p:= ScrollBar1.Position;
end;
end;
Felony
سه شنبه 08 فروردین 1391, 20:06 عصر
بعد مثلا ار این حور مسائل چجوری راه حل را میشه فهمید؟ مثلا شما از کجا می دونستید باید از em_LineScroll استفاده کرد و ... ؟
تجارب و آموخته های قبلی و جست و جو در Google , MSDN و سایت هایی مثل Stack overflow .
من می خواستم این کارو با یه روش دیگه انجام بدم،به نظر شما ایراد این کد کجاست؟
مشکل این هست که memo نمیدونه چقدر باید اسکرول کنه ، میزان اسکرول باید بر اساس اندازه فونت باشه ( کدی که من در پست قبل نوشتم و گفتم در رویداد OnCreate فرمتون بنویسید ) .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.