Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#9

AW: Ich will die Sanduhr zurück!

  Alt 5. Feb 2017, 13:13
Du kannst eigentlich an beliebiger Stelle im Progamm einfach Application.Title eine beliebige Zeichenfolge zuweisen. Die wird dann in der Taskleiste angezeigt.

So 'ne Art Fortschrittsanzeige könne so aussehen:
Delphi-Quellcode:
var
  sTitle : String;
begin
  sTitle := Application.Title;
  Table1.First;
  while not Table1.EoF do begin
    Table1.Edit;
    // Irgendwas ändern
    Table1.Post;
    Table1.Next;
    Application.Title := Format('ID: %.5d',[Table1.FieldByName('ID').AsInteger]);
  end;
  Application.Title := sTitle;
end;
Möchtest Du auch noch das Icon ändern, so müsste Application.Icon dafür die richtige Eigenschaft sein.

[EDIT]
Wenn Du einen eigenen Dialog haben möchtest, so kannst Du den TJvProgressDialog von den Jedis nehmen.

Aktualisieren des Dialoges könnte so gehen:
Delphi-Quellcode:
// pd -> Komponente TJvProgressDialog auf dem Formular
type
  Tform1 = class(TForm)
    pd: TJvProgressDialog;
  public
    { Public-Deklarationen }
    procedure pdAnzeigen(sCaption : String; sText : String = ''; iMin : Integer = 0; iMax : Integer = 100; iPosition : Integer = 50);
    procedure pdHide;
  end;

procedure Tform1.pdAnzeigen(sCaption : String; sText : String = ''; iMin : Integer = 0; iMax : Integer = 100; iPosition : Integer = 50);
begin
  pd.Caption := sCaption;
  pd.Text := sText;
  pd.Min := iMin;
  pd.Max := iMax;
  pd.Position := iPosition;
  pd.Show;
  if sText <> 'then Application.Title := sText;
end;

procedure TfmTextverwaltung.pdHide;
begin
  pd.Hide;
  Application.Title := 'Mein Programmname';
end;

// irgendwo im Programm
var
  iMin : Integer;
  iMax : Integer;
  iPos : Integer;
  sCaption : String;
  sText : String;

begin
  Screen.Cursor := crSQLWait;
  pdAnzeigen('Datenbankabfrage läuft ...');
  qrySQL.ExecSQL;

// oder
  pdAnzeigen('SQL-Statement wird ausgeführt ...',qrySQL.SQL.Text);
  qrySQL.ExecSQL;

//oder:
  pdAnzeigen('Öffne Abfrage ...',qrySQL.SQL.Text);
  qry.Open;
  iMin := 0;
  iMax := qry.RecordCount;
  iPos := 0;
  sCaption := Format('%d Datensätze werden verarbeitet ...',[iMax]);
  sText := '';
  pdAnzeigen(sCaption, sText, iMin, iMax , iPos);
  qry.First
  while not qry.Eof do begin
    Inc(iPos);
    sText := Format('ID: %.5d',[qry.FieldByName('ID').AsInteger]);
    pdAnzeigen(sCaption, sText , iMin, iMax, iPos);
    // Irgendwas mit den Daten machen ...
    qry.Next;
  end;
  qry.Close;
  pdHide;
  Screen.Cursor := crDefault;
[/EDIT]

Geändert von nahpets ( 5. Feb 2017 um 14:05 Uhr) Grund: Text ergänzt
  Mit Zitat antworten Zitat