AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Neuzeichnen von TStatusbar

Ein Thema von Neelix · begonnen am 2. Dez 2004 · letzter Beitrag vom 4. Dez 2004
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 11:49
Hi,

Ich würde empfehlen die Methode Update aufzurufen Application ProcessMessages geht auch ist aber unter Umständen mit Nebenwirkungen behaftet.

Zitat:
Die Methode Update bearbeitet alle anstehenden Zeichenbotschaften.

Delphi-Syntax:

procedure Update; virtual;

C++ Syntax:

virtual void __fastcall Update(void);

Beschreibung

Mit Update können Sie das sofortige Neuzeichnen des Steuerelements veranlassen, bevor weitere, möglicherweise zeitaufwendige Bearbeitungen durchgeführt werden. Mit Hilfe dieser Methode können Sie dem Benutzer eine sofortige Rückmeldung zukommen lassen.

Update ruft nicht die Methode Invalidate des Steuerelements auf, sondern veranlasst nur das Neuzeichnen von Bildschirmbereichen, die bereits aktualisiert wurden. Wenn auch das Steuerelement erneut gezeichnet werden soll, rufen Sie stattdessen Repaint auf.
Grüße

Frank
Frank
  Mit Zitat antworten Zitat
Neelix

Registriert seit: 30. Nov 2004
Ort: Im Delta-Quadranten
84 Beiträge
 
#12

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 12:27
Die Methode Update hat auch nichts gebracht. Teste gerade den Vorschlag von Luckie mit dem sleep. Welche Nebenwirkungen hat den Application.ProcessMesages?
  Mit Zitat antworten Zitat
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 12:54
Beispiel für Nebenwirkung:

Wenn Du eine Form erzeugts und sie in einer SetUp-Routine mit Daten füllst die dann zügig angezeigt werden sollen während weitere Initialisierung ablaufen führt ein Application Processmessage zwar zur direkten Anzeige der Form sorgt aber auch dafür das Events ablaufen bzw. auf Events reagiert wird die erst nach vollständigen SetUp behandelt werden können und das führt zu schönen Knalleffekten. Update hingegen zeichnet hingegen nur die bereits gefüllten Controls neu.

Grüße

Frank
Frank
  Mit Zitat antworten Zitat
Neelix

Registriert seit: 30. Nov 2004
Ort: Im Delta-Quadranten
84 Beiträge
 
#14

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 13:01
Sleep (2000) hat leider auch nichts gebracht.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#15

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 13:17
Moin!

Noch 2 Vorschlägen:

1. Vor dem Update noch ein Invalidate aufrufen
2. per Hand:
Delphi-Quellcode:
Var
  lRect : TRect;
Begin
  ...

  lRect := StatusBar.ClientRect;
  InvalidateRect(Handle, @lRect, False);
  UpdateWindow(Handle);

  ...
End;
MfG
Muetze1
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#16

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 13:17
Code:
Application.ProcessMessages
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#17

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 13:19
Machs mal so

Zitat von Neelix:
Hallo,

in einem Programm werden nacheinander mehrere Query's
Delphi-Quellcode:
      
      StatusBar1.SimpleText := 'Erstelle tmp_blabla_1';
      Application.ProcessMessages;
      dmCopyVertrag.qu_CreateDropTable.SQL.Clear;
      dmCopyVertrag.qu_CreateDropTable.SQL.Add('CREATE TEMP TABLE tmp_blabla1 (');
      dmCopyVertrag.qu_CreateDropTable.SQL.Add('bla_1 CHAR(20) NOT NULL,');
      dmCopyVertrag.qu_CreateDropTable.SQL.Add('bla_2 INTEGER NOT NULL)');
      dmCopyVertrag.qu_CreateDropTable.ExecSQL;
      dmCopyVertrag.qu_tmp_blabla_1.ExecSQL;

      StatusBar1.SimpleText := 'Erstelle tmp_blabla_11';
      Application.ProcessMessages;
      dmCopyVertrag.qu_CreateDropTable.SQL.Clear;
      dmCopyVertrag.qu_CreateDropTable.SQL.Add('CREATE TEMP TABLE tmp_blabla_11 (');
      dmCopyVertrag.qu_CreateDropTable.SQL.Add('bla_11 INTEGER NOT NULL,');
      dmCopyVertrag.qu_CreateDropTable.SQL.Add('bla_12 CHAR(21) NOT NULL)');
      dmCopyVertrag.qu_CreateDropTable.ExecSQL;
      dmCopyVertrag.qu_tmp_blabla_11.ExecSQL;
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#18

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 13:21
Moin!

Und für die letzten beiden nochmals dieses hier. Application.ProcessMessages ist an dieser Stelle wirklich kein guter Weg und wirkt eh wie eine Holzhammermethode.

MfG
Muetze1
  Mit Zitat antworten Zitat
Neelix

Registriert seit: 30. Nov 2004
Ort: Im Delta-Quadranten
84 Beiträge
 
#19

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 13:31
Hallo Muetze1,

Test läuft.
  Mit Zitat antworten Zitat
Neelix

Registriert seit: 30. Nov 2004
Ort: Im Delta-Quadranten
84 Beiträge
 
#20

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 13:51
Hat auch nichts gebracht. In meiner Verzweiflung versuche ich nun doch Application.ProcessMessages.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 11:49 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