AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Ich will die Sanduhr zurück!
Thema durchsuchen
Ansicht
Themen-Optionen

Ich will die Sanduhr zurück!

Ein Thema von p80286 · begonnen am 3. Feb 2017 · letzter Beitrag vom 6. Feb 2017
Antwort Antwort
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.928 Beiträge
 
Delphi 12 Athens
 
#1

AW: Ich will die Sanduhr zurück!

  Alt 5. Feb 2017, 09:21
Application.Title := 'was machen wir-Beschreibung'; Wenn's dann fertig ist, kommt wieder der alte Application.Title dahin. Man sieht halt auch bei minimiertem Programm, dass es noch lebt und noch nicht fertig ist.
Das ist doch genau der Anwendungszweck der Fortschrittsanzeige in der Taskleiste. Das hat Microsoft ja genau für diesen Zweck eingebaut. Deshalb macht das auch Sinn das zu benutzen wie ich oben schon schrieb.

Das finde ich auch viel intuitiver als nur den Anwendungstitel zu setzen, den ich nur sehe, wenn ich die Maus drüberhalte. Vor allem kann man auch direkt signalisieren, wenn die Aktion pausiert ist oder z.B. ein Fehler passiert ist, durch den eine Benutzereingabe erforderlich ist. Dazu kommt, dass man ein Overlay-Icon setzen kann um direkt in der Taskleiste zu signalisieren was gerade passiert, wenn das in so kleiner Form möglich ist.
Das sieht dann z.B. so aus:

TaskbarState.png
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Ich will die Sanduhr zurück!

  Alt 5. Feb 2017, 11:50
Application.Title := 'was machen wir-Beschreibung'; Wenn's dann fertig ist, kommt wieder der alte Application.Title dahin. Man sieht halt auch bei minimiertem Programm, dass es noch lebt und noch nicht fertig ist.
Das ist doch genau der Anwendungszweck der Fortschrittsanzeige in der Taskleiste. Das hat Microsoft ja genau für diesen Zweck eingebaut. Deshalb macht das auch Sinn das zu benutzen wie ich oben schon schrieb.

Das finde ich auch viel intuitiver als nur den Anwendungstitel zu setzen, den ich nur sehe, wenn ich die Maus drüberhalte. Vor allem kann man auch direkt signalisieren, wenn die Aktion pausiert ist oder z.B. ein Fehler passiert ist, durch den eine Benutzereingabe erforderlich ist. Dazu kommt, dass man ein Overlay-Icon setzen kann um direkt in der Taskleiste zu signalisieren was gerade passiert, wenn das in so kleiner Form möglich ist.
Das sieht dann z.B. so aus:

Anhang 46603
Über "Intuitiv" kann man wohl diskutieren, wobei es sein kann, daß ich der einzige bin, der sehr selten auf die Taskleiste schaut. Davon abgesehen, wie kann man (ich) das realisieren (Jedi?)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Ich will die Sanduhr zurück!

  Alt 5. Feb 2017, 12: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 13:05 Uhr) Grund: Text ergänzt
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Ich will die Sanduhr zurück!

  Alt 5. Feb 2017, 12:50
Mal schauen,
Vielen Dank!

K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#5

AW: Ich will die Sanduhr zurück!

  Alt 5. Feb 2017, 13:04
Es sei aber gesagt, dass nahpets' Lösung nicht das erreicht was auf jaenickes Screenshot zu sehen ist. Genau genommen würden die meisten Anwender diesen Application Title heute gar nicht mehr zu Gesicht bekommen. Über Bei Google suchendelphi taskbar progress findet man, wie man eine ProgressBar in die Taskleiste bekommt.

Als zusätzliche Maßnahme finde ich die Idee gut, aber nur einen anderen Cursor und diesen Titel ist nicht mehr zeitgemäß.
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Ich will die Sanduhr zurück!

  Alt 5. Feb 2017, 13:45
Seit XE7 oder XE8 gibt es eine Komponente TTaskBar, die dir die Funktionen zum Anzeigen der Statusbar und der Icons und Funktionsbuttons in der Taskleiste zur Verfügung stellt.

Wenn du diese Version nicht besitzt, dann kannst du dir allerdings durch die Interfaces von Microsoft behelfen und somit den gleichen Effekt erzielen.

ITaskBarList, ITaskBarList2, ITaskBarList3
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Ich will die Sanduhr zurück!

  Alt 5. Feb 2017, 15:14
Als zusätzliche Maßnahme finde ich die Idee gut, aber nur einen anderen Cursor und diesen Titel ist nicht mehr zeitgemäß.
Das versteh' ich nicht!
Solange der Benutzer gut erkennen kann, das ein Programm etwas arbeitet ("es tut nichts, dann tut es was") ist alles gut. Je nachdem ist ein Cursor oder ein Progressbar natürlich Augenwischerei, aber es ist gut für den Blutdruck des Benutzers.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#8

AW: Ich will die Sanduhr zurück!

  Alt 5. Feb 2017, 18:51
Mh, ich verstehe nicht was es nicht zu verstehen gibt.

Ich habe zwei Dinge in diesem Thread gesagt: Den Cursor würde heute keiner mehr sehen und Application.Title sieht auch niemand mehr. Wenn man also nur diese beiden Dinge zur Benachrichtigung verwendet, sehen viele Benutzer keine Indikation für einen laufenden Vorgang mehr.

Man kann natürlich nach "es tut nichts, dann tut es was" arbeiten, das wäre aber nicht der Standard den ich verfolge(n muss). Ich bin zwar wie gesagt in der Webentwicklung tätig, aber dafür sind unsere Kunden (mit Verlaub) besonders strohdoof. Da muss man sich um jede Indikation wirklich Gedanken machen...
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.928 Beiträge
 
Delphi 12 Athens
 
#9

AW: Ich will die Sanduhr zurück!

  Alt 6. Feb 2017, 06:27
Das versteh' ich nicht!
Solange der Benutzer gut erkennen kann, das ein Programm etwas arbeitet ("es tut nichts, dann tut es was") ist alles gut.
Den Application.Title sieht man seit Windows 7 (standardmäßig) nur, wenn man mir der Maus über den Eintrag in der Taskleiste hält. Den Cursor sieht man nur sicher, wenn man die Maus über die Anwendung hält.

Dir einzige immer sichtbare Methode seit Windows 7 ist die Fortschrittsanzeige direkt auf dem Taskbar Eintrag.
(Selbst wenn man die Taskleiste mit der Anzeige der Titel überflutet, was man ja auch ab Windows 7 leider noch einstellen kann, ist das sichtbar.)

Es ist auch die einzige Methode, bei der man ohne zu lesen den Status sieht.
Sebastian Jänicke
AppCentral
  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 19:48 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