AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi AnimateWindow und Komponetenverlust
Thema durchsuchen
Ansicht
Themen-Optionen

AnimateWindow und Komponetenverlust

Ein Thema von Shadow · begonnen am 21. Nov 2004 · letzter Beitrag vom 29. Nov 2005
Antwort Antwort
Shadow
(Gast)

n/a Beiträge
 
#1

AnimateWindow und Komponetenverlust

  Alt 21. Nov 2004, 23:24
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
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#2

Re: AnimateWindow und Komponetenverlust

  Alt 22. Nov 2004, 06:16
Hallo Shadow,
vielleicht bringt ja
FormX.Invalidate was ...
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
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Shadow
(Gast)

n/a Beiträge
 
#3

Re: AnimateWindow und Komponetenverlust

  Alt 22. Nov 2004, 13:34
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

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
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: AnimateWindow und Komponetenverlust

  Alt 22. Nov 2004, 13:37
Zitat von Shadow:
for i:=0 to FormX.componentcount-1 do
if FormX.component.classtype = TEdit then (Formx.component as TEdit).refresh;
....
Das geht auch einfacher:

Delphi-Quellcode:
for i:=0 to FormX.componentcount-1 do
  if FormX.component is TControl then TControl(Formx.component).refresh;
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: AnimateWindow und Komponetenverlust

  Alt 22. Nov 2004, 13:39
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...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Shadow
(Gast)

n/a Beiträge
 
#6

Re: AnimateWindow und Komponetenverlust

  Alt 22. Nov 2004, 13:46
@jim_raynor : Hast recht ist in dem Fall besser.. spart man sich nen bischen tipparbeit da ich ja
leier nicht nur Edits refreshen muß

@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
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#7

Re: AnimateWindow und Komponetenverlust

  Alt 29. Nov 2005, 08:32
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:
http://www.myrasmussen.de/bilder/richtig.png

Und so sieht es aus:
http://www.myrasmussen.de/bilder/falsch.png


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?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: AnimateWindow und Komponetenverlust

  Alt 29. Nov 2005, 08:45
Die Probleme hatte ich ohne die VCL bei meinem PasswordRecover auch. Ist zwar ein nettes Gimmick, macht im Endeffekt aber eigentlich nur mehr Probleme. Ich habe diesen Effekt dann auch nur beim Minimieren in die TNA genutzt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz