Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.043 c
15-1186512073
Loginov Dmitry
2007-08-07 22:41
2007.09.02
Баг в Delphi (от 7 до 2007) с условной компиляцией


15-1186483370
Галинка
2007-08-07 14:42
2007.09.02
.tar чем разархивировать?


2-1186260841
Wind
2007-08-05 00:54
2007.09.02
Как изменить цвет строки в DbGrig


15-1185994245
JohnJ
2007-08-01 22:50
2007.09.02
Распознавание текста с изображения (картинки формата bmp)


2-1186384703
DmitryFox
2007-08-06 11:18
2007.09.02
Локализация приложения для Китая





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский