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 3 von 3     123   
Benutzerbild von Luckie
Luckie

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

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 14:55
Wie wäre es mit einem separaten Thread? Nach jedem Schritt schickt der dem Hauptthread eine Nachricht mit einer Statusmeldung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Neelix

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

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 15:01
Habe noch nie Threads programmiert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 15:11
Ein Tutorial gibt es hier: http://tutorials.luckie-online.de
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Neelix

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

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 18:43
Danke Luckie. Ich schaue mir das mal an. Und wenn ich nicht weiterkomme, dann kann ich dich ja auch fragen.
Was empfiehlst Du in parallelen Threads laufen zu lassen. Die DB-Zugriffe?
BTW: Die einzelnen Queries stehen in einem DataWindow (VCL-Programmierung), und werden beim Programmstart schon erzeugt. Das geht bei Threads wohl eher nicht, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Neuzeichnen von TStatusbar

  Alt 2. Dez 2004, 18:45
Keine Ahnung, ich habe von DB Programmierung keinen Plan. Aber ich würde nur die Queries in den Thread auslagern, glaube ich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Neelix

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

Re: Neuzeichnen von TStatusbar

  Alt 3. Dez 2004, 10:27
So, ich habe jetzt mal einen Test gemacht. Verwende das VCL Thread-Objekt. Dann einen (!) Query-Aufruf in die Execute Methode gepackt und voila nach Abarbeitung dieses einen Threads werden alle nachfolgenden Einträge in die TStatusBar angezeigt, obwohl dies nicht mehr in einem separaten Thread abläuft. Is this a feature?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Neuzeichnen von TStatusbar

  Alt 3. Dez 2004, 18:44
So würde ich es machen, ohne TThread sondern mit der API:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure WndProc(var Msg: TMessage); override;
  end;

type
  TThreadParams = packed record
    FhWnd: THandle;
  end;
  PThreadParams = ^TThreadParams;

const
  MTM_STATUS = WM_USER + 1; // lParam -> Status-String

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ThreadFctn(p: Pointer): Integer;
var
  i: Integer;
  s: String;
  hWnd: THandle;
begin
  hWnd := PThreadParams(p)^.FhWnd;
  for i := 0 to 4 do
  begin
    s := 'Durchlauf: '+IntToStr(i);
    SendMessage(hWnd, MTM_STATUS, 0, Integer(PChar(s)));
    sleep(500);
  end;
  s := 'fertig';
  SendMessage(hWnd, MTM_STATUS, 0, Integer(PChar(s)));
  FreeMem(p, sizeof(TThreadParams));
  result := 0;
end;

procedure TForm1.WndProc(var msg: TMessage);
begin
  inherited;
  case msg.Msg of
    MTM_STATUS:
    begin
      Caption := PChar(msg.LParam);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ThreadParams: PThreadParams;
  ThreadID: Cardinal;
begin
  GetMem(ThreadParams, sizeof(TThreadParams));
  ThreadParams.FhWnd := Handle;
  CloseHandle(BeginThread(nil, 0, @ThreadFctn, ThreadParams, 0, ThreadID));
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Neelix

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

Re: Neuzeichnen von TStatusbar

  Alt 4. Dez 2004, 13:03
Zitat von Luckie:
So würde ich es machen, ohne TThread sondern mit der API:
Danke Luckie, aber ich meide die API-Programmierung, wenn ich kann. Werde Dein Beispiel aber am Montag mal ausprobieren.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 05:12 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