![]() |
AnimateWindow und Komponetenverlust
Hi. Vieleicht hat jemand von euch ne Idee und kann mir hier
weiter helfen. Ich Lade wie folgt ein Formular : (Fomx = TForm) FormX.BringToFront; AnimateWindow(FormX.Handle, 1000, AW_BLEND); FormX.Show; das klappt auch super... dennoch sind einige Komponenten auf dem Formular wie z.B. eine Radiobox oder auch der Inhalt einer Listbox nach dem SHOW auf dem Formular nicht sichtbar. Wenn man die bereiche durch anklicken markiert (z.B. in der Listbox) kommen die Komponenten bzw. deren inhalte zum vorschein. Ich kann den fehler beheben in dem ich in der OnShow Procedure des jeweiligen Formulars die Komponenten refreshe (z.B. ListBox1.refresh). Allerdings will ich diesen Weg vermeiden, da ich wenig lust habe alle kommponten eines Formulares jedes mal zu refreshen. hat jemand von euch ne idee woher der "fehler" kommt und wie ich das elegant lösen könnte p.s. das bringt auch nix : FormX.BringToFront; AnimateWindow(FormX.Handle, 1000, AW_BLEND); FormX.Show; FormX.refresh; <--------- :( Mfg Andy |
Re: AnimateWindow und Komponetenverlust
Hallo Shadow,
vielleicht bringt ja
Delphi-Quellcode:
was ...
FormX.Invalidate
In der Delphi Hilfe steht: Delphi-Syntax: procedure Invalidate; virtual; Beschreibung Verwenden Sie Invalidate, wenn das gesamte Steuerelement neu gezeichnet werden muss. Wenn mehrere Bereiche innerhalb des Steuerelements neu aufgebaut werden müssen, zeichnet Invalidate das gesamte Fenster ohne Bildschirmflackern neu. Die Leistung wird durch mehrfache Aufrufe der Methode Invalidate vor dem Neuzeichnen des Steuerelements nicht beeinträchtigt. bye Claus |
Re: AnimateWindow und Komponetenverlust
Hi Duffy,
habe es mit Invalidate an vielen Stellen probiert. Die Komponenten werden neu gezeichnet. Dennoch ist der Inhalt einiger Komponenten nicht sichtbar, wieder erst beim selektieren mit der Maus. Bringt also leider nix :( . Würde gerne wissen wieso das nicht klappt :wink: :) Habe schon daran gedacht ne procedure zu schreiben die alle Komponenten refresht for i:=0 to FormX.componentcount-1 do if FormX.component.classtype = TEdit then (Formx.component as TEdit).refresh; .... aber das find ich nicht so elegant ;-) Mfg Andy |
Re: AnimateWindow und Komponetenverlust
Zitat:
Delphi-Quellcode:
for i:=0 to FormX.componentcount-1 do
if FormX.component is TControl then TControl(Formx.component).refresh; |
Re: AnimateWindow und Komponetenverlust
Funktioniert es denn mit dem Refreshen von Komponenten ?
Wenn ja, dann würde ich die Procedure die du eben angedeutet hast benutzen ... Was anderes bleibt dir ja wohl dann nicht übrig und soo unschön find ich das auch nicht... :wink: |
Re: AnimateWindow und Komponetenverlust
@jim_raynor : Hast recht ist in dem Fall besser.. spart man sich nen bischen tipparbeit da ich ja
leier nicht nur Edits refreshen muß :-D @Neutral General: Also wenn ich die Komponenten eizelnt (wie im letzten Beitrag) refresh funktioniert das. Also so lange niemand anderes ne Idee hat woran das liegt, werde ich diesen Weg auch gehen müssen :) mfg Andy |
Re: AnimateWindow und Komponetenverlust
Ich habe z.Z. das selbe Problem.
Mit folgendem Code werden mir zwar die Komponenten alle angezeigt, allerdings verlieren einige Komponenten dann ihren 3D-Look (bisher beobachtet bei: TRichEdit, TEdit, TMemo, TTreeView, TListBox und TProgressBar):
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var i : Integer; begin AnimateWindow(Handle, 250, AW_BLEND or AW_ACTIVATE); for i := 0 to ComponentCount-1 do if (Components[i] is TControl) then (Components[i] as TControl).Repaint; end; So soll's aussehen: ![]() Und so sieht es aus: ![]() Den 3D-Look bekommen die Komponenten dann erst, wenn sie vom System her aufgefordert werden sich neu zu zeichnen (weil sie z.B. verdeckt waren) Hat jemand eine Idee? |
Re: AnimateWindow und Komponetenverlust
Die Probleme hatte ich ohne die VCL bei meinem
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 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