![]() |
|
|
#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); jmp $ ; Happy End! The Cake Is A Lie. |
#4
|
||||
|
||||
![]() Цитата:
![]() Google в помощь Последний раз редактировалось Ildar-tsr, 18.05.2012 в 13:24. |
#5
|
||||
|
||||
![]() но, имхо, лучше:
Код:
FormActivate(Self); / FormActivate(Sender); ![]() Пишу программы за еду. __________________ |
#6
|
||||
|
||||
![]() Цитата:
Google в помощь |
#7
|
||||
|
||||
![]() Цитата:
Код:
procedure TForm1.FormResize(Sender: TObject); begin Form1.FormActivate(Sender); end; Пишу программы за еду. __________________ |