Вторник, 15 Декабря 2020 г. 12:42
+ в цитатник
estra: Добрый день!
Возникла необходимость скрывать пункты PopupMenu в момент, когда оно раскрыто.
Но это приводит к сильному мерцанию, избавиться от которого не удается.
Как можно избавиться от мерцания PopupMenu?
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
i: Integer;
begin
Timer1.Enabled := False;
for i := PopupMenu1.Items.Count-1 downto 0 do
if i mod 2 = 0 then
PopupMenu1.Items[i].Visible := False;
end;
DFM
Скрытый текст
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 109
ClientWidth = 258
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PopupMenu = PopupMenu1
PixelsPerInch = 96
TextHeight = 13
object Timer1: TTimer
Enabled = False
Interval = 500
OnTimer = Timer1Timer
Left = 64
Top = 24
end
object PopupMenu1: TPopupMenu
OnPopup = PopupMenu1Popup
Left = 16
Top = 24
object N11: TMenuItem
Caption = '1'
end
object N21: TMenuItem
Caption = '2'
end
object N31: TMenuItem
Caption = '3'
end
object N41: TMenuItem
Caption = '4'
end
object N51: TMenuItem
Caption = '5'
end
object N61: TMenuItem
Caption = '6'
end
object N71: TMenuItem
Caption = '7'
end
object N81: TMenuItem
Caption = '8'
end
object N91: TMenuItem
Caption = '9'
end
object N01: TMenuItem
Caption = '0'
end
object N12: TMenuItem
Caption = '1'
end
object N22: TMenuItem
Caption = '2'
end
object N32: TMenuItem
Caption = '3'
end
object N42: TMenuItem
Caption = '4'
end
object N52: TMenuItem
Caption = '5'
end
object N62: TMenuItem
Caption = '6'
end
object N72: TMenuItem
Caption = '7'
end
object N82: TMenuItem
Caption = '8'
end
object N92: TMenuItem
Caption = '9'
end
object N02: TMenuItem
Caption = '0'
end
object N13: TMenuItem
Caption = '1'
end
object N23: TMenuItem
Caption = '2'
end
object N33: TMenuItem
Caption = '3'
end
object N43: TMenuItem
Caption = '4'
end
object N53: TMenuItem
Caption = '5'
end
object N63: TMenuItem
Caption = '6'
end
object N73: TMenuItem
Caption = '7'
end
object N83: TMenuItem
Caption = '8'
end
object N93: TMenuItem
Caption = '9'
end
object N03: TMenuItem
Caption = '0'
end
object N14: TMenuItem
Caption = '1'
end
object N24: TMenuItem
Caption = '2'
end
object N34: TMenuItem
Caption = '3'
end
object N44: TMenuItem
Caption = '4'
end
object N54: TMenuItem
Caption = '5'
end
object N64: TMenuItem
Caption = '6'
end
object N74: TMenuItem
Caption = '7'
end
object N84: TMenuItem
Caption = '8'
end
object N94: TMenuItem
Caption = '9'
end
object N04: TMenuItem
Caption = '0'
end
object N15: TMenuItem
Caption = '1'
end
object N25: TMenuItem
Caption = '2'
end
object N35: TMenuItem
Caption = '3'
end
object N45: TMenuItem
Caption = '4'
end
object N55: TMenuItem
Caption = '5'
end
object N65: TMenuItem
Caption = '6'
end
object N75: TMenuItem
Caption = '7'
end
object N85: TMenuItem
Caption = '8'
end
object N95: TMenuItem
Caption = '9'
end
object N05: TMenuItem
Caption = '0'
end
object N16: TMenuItem
Caption = '1'
end
object N26: TMenuItem
Caption = '2'
end
object N36: TMenuItem
Caption = '3'
end
object N46: TMenuItem
Caption = '4'
end
object N56: TMenuItem
Caption = '5'
end
object N66: TMenuItem
Caption = '6'
end
object N76: TMenuItem
Caption = '7'
end
object N86: TMenuItem
Caption = '8'
end
object N96: TMenuItem
Caption = '9'
end
object N06: TMenuItem
Caption = '0'
end
end
end
PAS
Скрытый текст
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
PopupMenu1: TPopupMenu;
N11: TMenuItem;
N21: TMenuItem;
N31: TMenuItem;
N41: TMenuItem;
N51: TMenuItem;
N61: TMenuItem;
N71: TMenuItem;
N81: TMenuItem;
N91: TMenuItem;
N01: TMenuItem;
N12: TMenuItem;
N22: TMenuItem;
N32: TMenuItem;
N42: TMenuItem;
N52: TMenuItem;
N62: TMenuItem;
N72: TMenuItem;
N82: TMenuItem;
N92: TMenuItem;
N02: TMenuItem;
N13: TMenuItem;
N23: TMenuItem;
N33: TMenuItem;
N43: TMenuItem;
N53: TMenuItem;
N63: TMenuItem;
N73: TMenuItem;
N83: TMenuItem;
N93: TMenuItem;
N03: TMenuItem;
N14: TMenuItem;
N24: TMenuItem;
N34: TMenuItem;
N44: TMenuItem;
N54: TMenuItem;
N64: TMenuItem;
N74: TMenuItem;
N84: TMenuItem;
N94: TMenuItem;
N04: TMenuItem;
N15: TMenuItem;
N25: TMenuItem;
N35: TMenuItem;
N45: TMenuItem;
N55: TMenuItem;
N65: TMenuItem;
N75: TMenuItem;
N85: TMenuItem;
N95: TMenuItem;
N05: TMenuItem;
N16: TMenuItem;
N26: TMenuItem;
N36: TMenuItem;
N46: TMenuItem;
N56: TMenuItem;
N66: TMenuItem;
N76: TMenuItem;
N86: TMenuItem;
N96: TMenuItem;
N06: TMenuItem;
procedure PopupMenu1Popup(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
i: Integer;
begin
Timer1.Enabled := False;
for i := PopupMenu1.Items.Count-1 downto 0 do
if i mod 2 = 0 then
PopupMenu1.Items[i].Visible := False;
end;
end.
https://forum.sources.ru/index.php?showtopic=421015&view=findpost&p=3842857
Метки:
Delphi:
Общие вопросы
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-