Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Combobox Item als Hint (https://www.delphipraxis.net/17912-combobox-item-als-hint.html)

Sanchez 11. Mär 2004 15:09


Combobox Item als Hint
 
Hallo zusammen,

Ich hab eine Combobox, in der die Items meistens breiter als die Box sind.
Jetzt möchte ich den den Hint auf den Inhalt des ausgewählten Items setzen.

Der Hint soll auch gesetzt werden, wenn die ComboBox aufgeklappt ist und sich die Maus auf einem Item befindet. Leider konnte ich kein Event finden in dem ich das machen könnte.

Vielleicht weiss von euch einer wie man das machen könnte.

grüße, daniel

Keldorn 11. Mär 2004 20:10

Re: Combobox Item als Hint
 
Hallo

Du könntest die Breite des aufgeklappten Bereichs ändern
Delphi-Quellcode:
ComboBox1.Perform(CB_SETDROPPEDWIDTH,Breite,0);
dann siehst du schon mal mehr von den Einträgen (notwendige Länge kannst du mit Canvas.textwidth und dem breitesten Item ermitteln).

im Onchange und onselectereignis könntest du noch den hint der Eingabe festlegen. Es fehlen die mousemove-ereignisse, um in einer Combobox hints entsprechen der Items anzuzeigen. Für Listboxen gibts schon was im Forum Hier im Forum suchenlistbox hint.

Wenn du für jeden Eintrag einen Hint anzeigen willst, wär vielleicht noch ondrawitem eine Möglichkeit. Frag dort ab, ob das Item "selektiert" dargestellt werden soll (also ist die mouse drüber) und bau den hint so auf, wie bei den Codebsp bei der Listbox.

Mfg Frank

Sliver 18. Okt 2005 14:18

Re: Combobox Item als Hint
 
Ist zwar schon ein älteres Topic. Aber ich schreib jetzt trotzdem hier hinein, da ich genau dasselbe Problem habe.

Ich habe folgendes versucht:
Delphi-Quellcode:
procedure TForm1.Combobox1(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  olh:String;
begin
  with Combobox1 do begin
    Canvas.Brush.Style:=bsSolid;
    Canvas.FillRect(Rect);
    Canvas.TextRect(Rect, Rect.Left, Rect.Top,Items[Index]);

    olh:=Hint;
    if (index<=Items.Count-1) then
      Hint:=Items.Strings[Index]
    else
      Hint:='';
    if Hint<>olh then
      Application.CancelHint;
    end
end;
Mit dieser Methode wird wohl der richtige Hint dem richtigen Eintrag zugewiesen. Das Problem ist aber, dass dieser Hint erst angezeigt wird, wenn man die Combobox schliesst und mit der Maus darüberfährt. Gibt es jetzt irgendeine Möglichkeit, den Hint anzeigen zu erzwingen?

Sliver 18. Okt 2005 15:03

Re: Combobox Item als Hint
 
So und auch schon was gefunden im Internet:
http://delphi.about.com/library/weekly/aa102604a.htm

Hat zwar ein paar kleine Makel, aber muss man halt noch ein bisschen rumbasteln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 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