![]() |
Fenster mit überschriebenen Konstruktor erhöht CPU Last
Ich habe folgendes Fenster:
Delphi-Quellcode:
Aufruf:
type
TfrmPreview = class(TForm) TntLabel1: TTntLabel; btnPrevious: TTntButton; btnNext: TTntButton; TntLabel2: TTntLabel; procedure FormPaint(Sender: TObject); procedure btnNextClick(Sender: TObject); procedure btnPreviousClick(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } FFotoBook: TFotoBook; PageID: Integer; procedure Next; procedure Previous; public { Public declarations } constructor Create(AOwner: TComponent; FotoBook: TFotoBook); reintroduce; end; var frmPreview : TfrmPreview; implementation {$R *.dfm} procedure TfrmPreview.btnNextClick(Sender: TObject); begin Next; end; procedure TfrmPreview.btnPreviousClick(Sender: TObject); begin Previous; end; constructor TfrmPreview.Create(AOwner: TComponent; FotoBook: TFotoBook); begin inherited Create(AOwner); FFotoBook := FotoBook; end; procedure TfrmPreview.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_ESCAPE: Close; VK_RIGHT, VK_DOWN, VK_SPACE, VK_NEXT: Next; VK_LEFT, VK_UP, VK_PRIOR: Previous end; Key := 0; end; procedure TfrmPreview.FormPaint(Sender: TObject); begin FFotoBook.PageParent := Self; PageID := 0; FFotoBook.Display(PageID); end; procedure TfrmPreview.Next; begin TntLabel2.Caption := Format('%d / %d', [PageId, FFotoBook.PageCollection.Count]); if PageID < FFotoBook.PageCollection.Count - 1 then begin Inc(PageID); //FFotoBook.Display(PageID); end; btnNext.Enabled := PageID <> FFotoBook.PageCollection.Count - 1; end; procedure TfrmPreview.Previous; begin ShowMessage('Previous'); end;
Delphi-Quellcode:
So bald ich das Formular frmPreview aufrufe, habe ich eibe CPU Last von 99%, da geht natürlich nix mehr, schließe ich es wieder, wird wieder alles normal. Das Formualr frmPreview wird maximiert und mit einem schwarzen Hintergrund angezeigt.
procedure TFotoBook.ShowPreview;
var TempPageParent: TWinControl; begin // Seiten Parent sichern TempPageParent := Self.PageParent; Self.ZoomFactor := ZOOMFACTORPREVIEW; with TfrmPreview.Create(nil, Self) do ShowModal; Self.ZoomFactor := ZOOMFACTORDESIGN; Self.PageParent := TempPageParent; Self.Display(0); end; Warum verhält sich das so und was mache ich falsch? |
Re: Fenster mit überschriebenen Konstruktor erhöht CPU Last
ich würde es mal auf deine Paintmethode schieben. Im Paint rufst du durch Änderungen und Parentzuweisungen wieder Paint auf.
|
Re: Fenster mit überschriebenen Konstruktor erhöht CPU Last
Oh. Danke für den Hinweis. Dann muss ich da was umbauen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz