Вторник, 22.09.2026, 02:19
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Форма входа
Меню сайта
Главная » FAQ » Программирование Delphi [ Добавить вопрос ]

Программирование Delphi [91]
Вопрос-Ответ по программированию

При показе всплывающего меню установите foreground window, затем пошлите сообщение WM_NULL после показа меню.

 
             procedure TForm1.WndProc(var Msg : TMessage); 
             var 
               p : TPoint; 
             begin 
               case Msg.Msg of 
                 WM_USER + 1: 
                 case Msg.lParam of 
                   WM_RBUTTONDOWN: begin 
                      SetForegroundWindow(Handle); 
                      GetCursorPos(p); 
                      PopupMenu1.Popup(p.x, p.y); 
                      PostMessage(Handle, WM_NULL, 0, 0); 
                   end; 
                 end; 
               end; 
               inherited; 
             end; 

При показе всплывающего меню установите foreground window, затем пошлите сообщение WM_NULL после

показа меню.

procedure TForm1.WndProc(var Msg : TMessage);

var

p : TPoint;

begin

case Msg.Msg of

WM_USER + 1:

case Msg.lParam of

WM_RBUTTONDOWN: begin

SetForegroundWindow(Handle);

GetCursorPos(p);

PopupMenu1.Popup(p.x, p.y);

PostMessage(Handle, WM_NULL, 0, 0);

end;

end;

end;

inherited;

end;

Добавил: Администратор

Используя API фукцию GetSystemTime.

Пример :

procedure TForm1.Button1Click(Sender: TObject);

var

lt : TSYSTEMTIME;

st : TSYSTEMTIME;

begin

GetLocalTime(lt);

GetSystemTime(st);

Memo1.Lines.Add('LocalTime = ' +

IntToStr(lt.wmonth) + '/' +

IntToStr(lt.wDay) + '/' +

IntToStr(lt.wYear) + ' ' +

IntToStr(lt.wHour) + ':' +

IntToStr(lt.wMinute) + ':' +

IntToStr(lt.wSecond));

Memo1.Lines.Add('UTCTime = ' +

IntToStr(st.wmonth) + '/' +

IntToStr(st.wDay) + '/' +

IntToStr(st.wYear) + ' ' +

IntToStr(st.wHour) + ':' +

IntToStr(st.wMinute) + ':' +

IntToStr(st.wSecond));

end;

Добавил: Администратор

Windows API функция PatBlt().

Пример :

procedure TForm1.Button1Click(Sender: TObject);

begin

PatBlt(Form1.Canvas.Handle,

0,

0,

Form1.ClientWidth,

Form1.ClientHeight,

WHITENESS);

end;

Добавил: casperof (casperof)

На событии Resize вызовите Windows API функцию InvalidateRect(). Если передать nil в качестве второго

параметра приведет к тому, что перерисовываться будет вся клиентская область окна. Третий параметр

указывает будет ли перерисовываться фон формы.

Пример :

procedure TForm1.FormResize(Sender: TObject);

begin

InvalidateRect(Form1.Handle, nil, false);

end;

Добавил: casperof (casperof)

Наш опрос
Сколько вам лет
Всего ответов: 20
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск