Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.02;
Скачать: CL | DM;

Вниз

Как установить некоторую форму поверх других   Найти похожие ветки 

 
Miroving   (2007-08-09 01:05) [0]

У меня есть главная форма Form1. В ней для кнопки button1 в property onclik() активизируется MesForm:

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
....
   MesForm.OutputMessage(self.Left + Button1.Left,self.Top + Button1.Top);
.....
end;
 где:

procedure TMesForm.OutputMessage(x, y: integer);
begin
   self.Left := x;
   self.Top := y - 100;

   self.Visible := true;
   self.Height := 75;
   self.Width := 100;
   self.SetFocus;
   self.Enabled := true;

   canvas.Ellipse(10,10, 300, 100);
end;


В итоге у меня MesForm мигает и наверх опять вылазит Form1. Как сделать, чтоб после вызова OutputMessage верхней оставалась MesForm?

П.С.  Form1 убирать нельзя, она должна остатся видимой, но под MesForm.
П.П.С. Enabled и SetFocus как видите, не помогли.
П.П.С. Заранее благодарен за совет :)


 
{RASkov} ©   (2007-08-09 03:53) [1]

> [0] Miroving   (09.08.07 01:05)
> П.П.С. Enabled и SetFocus как видите, не помогли.

Ну вообще-то SetFocus "должен поднять" ее(MesForm) если она видима.... Впринципе будет достаточно BringToFront т.е. Show;
procedure TMesForm.OutputMessage(x, y: integer);
begin
  Left := x;
  Top := y - 100;
  Height := 75;
  Width := 100;
  Show;
  canvas.Ellipse(10,10, 300, 100);
end;

А для чего такой "дурной" код понадобился? :)


> self.Enabled := true;

self писать внутри метода не обязательно если нет на то необходимых причин, например в with ... do
Эта строчка, грубо говоря, не выполнится если свойство имеет тоже значение, что и присваиваем....
Посмотри как многие методы записи значений свойствам работают, например:
procedure TControl.SetEnabled(Value: Boolean);
begin
 if FEnabled <> Value then
 begin
   FEnabled := Value;
   Perform(CM_ENABLEDCHANGED, 0, 0);
 end;
end;
Тоже самое и с Visible....


 
Miroving   (2007-08-09 11:39) [2]

>>А для чего такой "дурной" код понадобился? :)
Это будет всплывающая подсказка. Ещё не готова:)

В целом Show; тоже не помог. Но сегодня поутру разобрался. Дело было в том, что программа после выхода из
TMesForm.OutputMessage(x, y: integer);
опять попадала в TForm1.Button1Click(Sender: TObject);
и передавала фокус управления одному из компонентов TForm1.

Сей час всё уже исправил.
Спасибо


 
{RASkov} ©   (2007-08-09 12:32) [3]

> [2] Miroving   (09.08.07 11:39)
> Это будет всплывающая подсказка. Ещё не готова:)

Лучше в сторону баллунов(или как их там) посмотри, имхо...
Иначе как то не красиво, когда подсказка фокус отбирает....



Страницы: 1 вся ветка

Текущий архив: 2007.09.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
2-1186512899
Цукор5
2007-08-07 22:54
2007.09.02
Кол-во символом в числе.


15-1186039685
nosfik
2007-08-02 11:28
2007.09.02
Пути к библиотекам


4-1173790118
cherrex
2007-03-13 15:48
2007.09.02
Show Window Content With Dragging Effect Enabled


11-1168893404
Trible
2007-01-15 23:36
2007.09.02
Про strlist


15-1185968799
Knight
2007-08-01 15:46
2007.09.02
Чем отличаются ADSL-модемы?