Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.05.2012, 09:32
pylsar pylsar вне форума
Прохожий
 
Регистрация: 11.02.2012
Сообщения: 18
Репутация: 10
По умолчанию отступы в memo1

Вот собственно такая процедурка есть
Код:
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  
Старый 18.05.2012, 12:30
pylsar pylsar вне форума
Прохожий
 
Регистрация: 11.02.2012
Сообщения: 18
Репутация: 10
По умолчанию

Вышел из ситуации таким способом
Код:
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  
Старый 18.05.2012, 12:49
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

В Sender передаётся объект, который вызвал событие. Логичнее будет
Код:
 (Sender as TForm1).FormActivate(Sender);
З.Ы. Ради интереса: а если менять размер формы и активность - не глючит?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #4  
Старый 18.05.2012, 12:56
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от pylsar
Вообще верна ли строчка Form1.FormActivate(Sender) ?
Абсолютно верно
__________________
Google в помощь

Последний раз редактировалось Ildar-tsr, 18.05.2012 в 13:24.
Ответить с цитированием
  #5  
Старый 18.05.2012, 13:15
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

но, имхо, лучше:
Код:
FormActivate(Self); / FormActivate(Sender);
а то вдруг имя Form1 на FormMain поменяется
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 18.05.2012, 15:28
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от NumLock
а то вдруг имя Form1 на FormMain поменяется
Компилятор в помощь.
__________________
Google в помощь
Ответить с цитированием
  #7  
Старый 18.05.2012, 15:51
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Ildar-tsr
Компилятор в помощь.
каким местом? если написать:
Код:
procedure TForm1.FormResize(Sender: TObject);
begin
  Form1.FormActivate(Sender);
end;
и переименовать форму, то красный Form1 не изменится.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:00.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025