Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Text neben Cursor einblenden (https://www.delphipraxis.net/160564-text-neben-cursor-einblenden.html)

JonnyGuitar 19. Mai 2011 16:15

Delphi-Version: 2007

Text neben Cursor einblenden
 
Hallo,

ich habe folgendes Problem. Bei meinem Programm können Wartezeiten entstehen wenn Informationen vom Server
geladen werden. Ich verändere daraufhin den Cursor auf Sanduhr mit
Delphi-Quellcode:
Screen.Cursor := crHourGlass;
Zur Information würde ich jetzt gerne neben der Sanduhr einen Text einblenden, der auf die Wartezeit
hinweist und quasi bei Mausbewegung mitwandert.

Ist dies möglich? Was hätte ich dafür zu tun?


Gruss Jonny

s.h.a.r.k 19. Mai 2011 16:36

AW: Text neben Cursor einblenden
 
Ich würde von TCustomForm ableiten und daraus eine entsprechende Komponente basteln. Klar, man kann behaupten, dass es etwas zu viel des Guten wäre, aber man hat so sehr viel Flexibilität, wie ich finde.

Eine Alternative wäre es mit einem Hint zu arbeiten, wobei ich da recht wenig Erfahrung habe.

-- Edit: Oder du nutzt eine Overlay-Form, wie ich es mal programmiert hatte. Ich habe eine Form ohne Rahmen model eingeblendet, die so groß war, wie der ClientBereich der eigentlichen Form. Darauf lief dann ein Throbber, da ich die Zeit nicht abschätzen konnte, wie lange der Vorgang dauert.

stahli 19. Mai 2011 16:44

AW: Text neben Cursor einblenden
 
Falls es Hint-Lösungen sein können, würde ich 2 Möglichkeiten sehen:

Die AlphaControls bringen einen HintManager mit, der sehr flexibel einsetzbar ist (incl. zyklischem Refresh).

Ansonsten habe ich mal eine Hint-Lösung gefunden, die für jedes Item einer aufgeklappten ComboBox ein individuelles Hint anzeigt. Vielleicht könnte man davon etwas ableiten. Könnte es bei Bedarf raussuchen.

ASM 20. Mai 2011 00:09

AW: Text neben Cursor einblenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es gibt eine recht nützliche Unit (mcHintbox, http://mastercluster.com/doc/467), mit deren Hilfe man das sehr gut erreichen kann.
Diese Unit ist zwar leider nicht OpenSource, sondern kostet ca. 15 EUR, kann ich aber aus meiner Erfahrung mit ihr empfehlen.

Wie diese Hintbox für den genannten Zweck eingesetzt werden kann, hier an einem eigenen Beispiel (und compiliert als Anhang):

Delphi-Quellcode:
uses mcHintbox;

var
  SwitchedOn: Boolean = false;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  MousePt: TPoint;
begin
  if (x <= 20) or (x >= panel1.Width - 20) or (y <= 20) or (y >= panel1.Height - 20) then
  // Abstand vom Panelrand halten, um die Hintbox durch simulierten Mausklick
  // rechtzeitig vor Verlassen des Panels auszuschalten
  with panel1 do
  begin
    mouse_event(MOUSEEVENTF_LEFTDOWN, left, width, top, height);
    mouse_event(MOUSEEVENTF_LEFTUP, left, width, top, height);
  end
  else
    if SwitchedOn then
  // Ein-/Ausschalten triggern, um Flackern der Hintbox bei der Bewegung zu vermeiden
    begin
      MousePt := ClientToScreen(Point(x, y));
      HintBox(MousePt.x, MousePt.y, ' Yes, it is working', ' Helpfull Message');
    end;
  SwitchedOn := not SwitchedOn;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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 by Thomas Breitkreuz