![]() |
Gauge OnKlick
Hallo,
ich habe dynamisch in einer listbox gauges erstellt (eins für jeden eintrag) , das funktioniert soweit auch ganz gut, mein problem ist jetzt, wenn ich auf das gauge klicke, wird der listbox eintrag nicht markiert. Da es beim gauge kein OnKlick event gibt, bin nich leider etwas ratlos, wie ich es sonst anstellen könnte, ich bitte um rat. MFG Van HelF |
Re: Gauge OnKlick
per ItemsAtPos? is mal so ne idee.
lg el |
Re: Gauge OnKlick
wie funtioniert das?
hab bei der suche nichts dazu gefunden. |
Re: Gauge OnKlick
Delphi-Quellcode:
lg el
Listbox1.itemsatpos({Hier musst du eine Varible vom Typ TPoint übergeben also z.b: Mouse.CursorPos});
|
Re: Gauge OnKlick
danke für den tipp, nur hilft mir leider nicht viel weiter.
ich müsste nur irg. herausfinden, ob jemand auf das gauge klickt, und dann noch auf welches. |
Re: Gauge OnKlick
aso ups. das du das on klick suchst hab ich übersehen! :oops: sry!! ähhm programmier dir eins. mit messages.
lg el Ps: sry nochmal! |
Re: Gauge OnKlick
ich habe folgendes gefunden, jedoch wird es nur bei einem klick auf das form ausgeführt, nicht bei den komponenten darauf :(
Delphi-Quellcode:
procedure LeftMouseButtonDown(var Msg : TMouseInput); message WM_LBUTTONDOWN;
|
Re: Gauge OnKlick
Hi,
wäre es nicht einfacher, auf die Gauge-Controls zu verzichten und die ListBox-Einträge selbst zu zeichnen? Dazu mußt du lediglich die Eigenschaft ![]() ![]() ![]()
Delphi-Quellcode:
Gruß Hawkeye
// Zeichnet eine Fortschrittanzeige
procedure DrawProgress (aCanvas: TCanvas; const aRect: TRect; aPercent: Integer; aText: string = ''); var tx, ty : Integer; R : TRect; begin if (aText <> '') then aText := aText + ' '; aText := aText + Format('(%d%%)', [aPercent]); with aCanvas do begin tx := (aRect.Left + aRect.Right - TextWidth(aText)) div 2; ty := (aRect.Top + aRect.Bottom - TextHeight(aText)) div 2; // Hintergrund (linker Teil) R := aRect; R.Right := aRect.Left + MulDiv(aRect.Right - aRect.Left, aPercent, 100); Brush.Color := clNavy; FillRect (R); // Text (linker Teil) Font.Color := clWhite; TextRect (R, tx, ty, aText); // Hintergrund (rechter Teil) R.Left := R.Right; R.Right := aRect.Right; Brush.Color := RGB(240, 240, 240); FillRect (R); // Text (rechter Teil) Font.Color := clBlack; TextRect (R, tx, ty, aText); end; end; procedure TForm1.FormCreate (Sender: TObject); begin ListBox1.Style := lbOwnerDrawFixed; // kann auch im OI ListBox1.ItemHeight := 20; // vorgenommen werden end; procedure TForm1.ListBox1DrawItem (Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin with ListBox1 do begin if (odSelected in State) then Canvas.Brush.Color := clRed else Canvas.Brush.Color := clWindow; Canvas.FillRect (Rect); InflateRect(Rect, -2, -2); DrawProgress (Canvas, Rect, Integer(Items.Objects[Index]), Items[Index]); end; end; // zum Testen: procedure TForm1.Button1Click (Sender: TObject); begin with ListBox1.Items do AddObject(Format('item #%d', [Count + 1]), TObject(Random(100))); end; |
Re: Gauge OnKlick
vielen dank :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 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