![]() |
|
|
|
|
#1
|
|||
|
|||
|
Вот собственно такая процедурка есть
Код:
procedure TForm1.Memo1Change(Sender: TObject); var Rect: TRect; begin SendMessage( Memo1.Handle, EM_GETRECT, 0, LongInt(@Rect)); Rect.Left:= 10; Rect.Top:=10; SendMessage(Memo1.Handle, EM_SETRECT, 0, LongInt(@Rect)); Memo1.Refresh; end; Создающая отступы по 10 пикселей сверху и слева. Однако при загрузке другого файла в ту же memo1 снизу съедается 10 пикселей видимого диапазона, и так при каждой загрузке до того момента пока видимой не остается одна строка, остальные строки попадают в невидимый диапазон и просмотреть их можно только движением вертикального скрола. Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
Memo1.Repaint;
Memo1.Lines.LoadFromFile('F:\1\'+ ComboBox1.Text);
Memo1.SelStart:= 0;
Memo1.SelLength := 0;
end;Как избавится от этого ? |
|
#2
|
|||
|
|||
|
Вышел из ситуации таким способом
Код:
procedure TForm1.FormActivate(Sender: TObject); var Rect: TRect; begin SendMessage( Memo1.Handle, EM_GETRECT, 0, LongInt(@Rect)); Rect.Left:= 10; Rect.Top:=10; SendMessage(Memo1.Handle, EM_SETRECT, 0, LongInt(@Rect)); Memo1.Refresh; end; procedure TForm1.FormResize(Sender: TObject); begin Form1.FormActivate(Sender); end; Вообще верна ли строчка Form1.FormActivate(Sender) ? |
|
#3
|
||||
|
||||
|
В Sender передаётся объект, который вызвал событие. Логичнее будет
Код:
(Sender as TForm1).FormActivate(Sender); |
|
#4
|
||||
|
||||
|
Цитата:
![]() Последний раз редактировалось Ildar-tsr, 18.05.2012 в 13:24. |
|
#5
|
||||
|
||||
|
но, имхо, лучше:
Код:
FormActivate(Self); / FormActivate(Sender); ![]() |
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
||||
|
||||
|
Цитата:
Код:
procedure TForm1.FormResize(Sender: TObject); begin Form1.FormActivate(Sender); end; |