AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ComboBox Hint onItem?

Ein Thema von kagi3624 · begonnen am 20. Dez 2021 · letzter Beitrag vom 24. Dez 2021
Antwort Antwort
Seite 1 von 2  1 2   
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#1

ComboBox Hint onItem?

  Alt 20. Dez 2021, 11:37
Delphi-Version: 6
Hallo, ich möchte gerne ein Hint bei jedem Item der Combobox (csDropDownList) anzeigen lassen.
So wie ich es verstanden habe, soll es recht kompliziert sein und ich habe kein Beispielcode gefunden bis auf die Anleitung hier, welche ich allerdings nicht so wirklich verstehe. Hat das schon mal jemand gemacht und kann paar Tips geben?

Danke!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: ComboBox Hint onItem?

  Alt 20. Dez 2021, 13:22
.. möchtest Du den Hint sehen, wenn die Liste aufgeklappt ist und ein Iten ge-high-lighted wird-
oder wenn ein Item ausgewählt wurde und die Liste ist wieder zugeklappt?

Für das letztere (wie schon imSO Artikelt erwähnt)

Delphi-Quellcode:
procedure TForm1.ComboBox1Select(Sender: TObject);
begin
  case (sender as TComboBox).ItemIndex of
    0: (sender as TComboBox).Hint := 'null';
    1: (sender as TComboBox).Hint := 'eins';
    2: (sender as TComboBox).Hint := 'zwei';
    3: (sender as TComboBox).Hint := 'drei';
    4: (sender as TComboBox).Hint := 'vier';
  end;
end;
Hier wird der HintText anhand des Indexes des ausgewählten Items gesetzt.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: ComboBox Hint onItem?

  Alt 20. Dez 2021, 15:40
Ja eigentlich das schwierige: Beim Aufklappen der ComboBox mit der Maus über die Items gehen (also nicht auswählen).
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#4

AW: ComboBox Hint onItem?

  Alt 20. Dez 2021, 18:46
Hmm..

Kannst Dir ja das hier mal anschauen:

https://www.delphipraxis.net/197458-...mousemove.html
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#5

AW: ComboBox Hint onItem?

  Alt 20. Dez 2021, 20:17
Und wenn du ans MouseMove über dem DropDown ran kommst, dann kannst den Hint auch selber anzeigen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: ComboBox Hint onItem?

  Alt 21. Dez 2021, 12:40
Und wenn du ans MouseMove über dem DropDown ran kommst, dann kannst den Hint auch selber anzeigen.
Bei Stackoverflow steht, dass man das nicht einfach so machen kann und THintWindow benutzen soll. Aber meine Versuche dazu sind kläglich gescheitert. Hints werden trotzdem nicht angezeigt.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#7

AW: ComboBox Hint onItem?

  Alt 22. Dez 2021, 08:52
Hmm..

Mit den Beispielen aus meinem vorherigen Link + Google, ein Beispiel!
Angehängte Dateien
Dateityp: zip Test_ComboBox_Hint.zip (218,7 KB, 8x aufgerufen)
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: ComboBox Hint onItem?

  Alt 22. Dez 2021, 09:07
@Holger, vielen Dank!

Code:
FHintWnd.ActivateHint(Rect(pt.X+10,pt.Y,pt.X+100,pt.Y+20),tmpHint);
war das Problem, ich dachte man macht es mit ShowHint

  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
477 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: ComboBox Hint onItem?

  Alt 22. Dez 2021, 10:11
Basierend auf dem Beispiel von Holger könnte man auch die Komponente erweitern.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type

  TComboBox = class(Vcl.StdCtrls.TComboBox)
  private
    FcbHintIndex: Integer;
    FHintWindow: THintWindow;
  protected
    procedure Change; override;
    procedure DropDown; override;
    procedure CloseUp; override;
    procedure InitiateAction; override;
  end;

  TForm1 = class(TForm)
    cb: TComboBox;
    procedure cbChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
  protected
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.cbChange(Sender: TObject);
var
  P: TPoint;
begin
  case (Sender as TComboBox).ItemIndex of
    0:
      (Sender as TComboBox).Hint := 'null';
    1:
      (Sender as TComboBox).Hint := 'eins';
    2:
      (Sender as TComboBox).Hint := 'zwei';
    3:
      (Sender as TComboBox).Hint := 'drei';
    4:
      (Sender as TComboBox).Hint := 'vier';
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to 4 do
    cb.Items.Add(I.ToString);
end;

{ TComboBox }

procedure TComboBox.Change;
var
  P: TPoint;
begin
  inherited;
  if (Hint <> '') and DroppedDown and GetCursorPos(P) then
    FHintWindow.ActivateHint(Rect(P.X + 10, P.Y + 20, P.X + 100, P.Y + 40), Hint);
end;

procedure TComboBox.CloseUp;
begin
  inherited;
  FHintWindow.Hide;
  ControlStyle := ControlStyle - [csActionClient];
end;

procedure TComboBox.DropDown;
begin
  inherited;
  if not Assigned(FHintWindow) then
    FHintWindow := THintWindow.Create(Self);
  FcbHintIndex := -1;
  ControlStyle := ControlStyle + [csActionClient];
end;

procedure TComboBox.InitiateAction;
var
  Idx: Integer;
begin
  inherited;
  Idx := ItemIndex;
  if Idx <> FcbHintIndex then
  begin
    FcbHintIndex := ItemIndex;
    Change;
  end;
end;

end.
Code:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 220
  ClientWidth = 471
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -12
  Font.Name = 'Segoe UI'
  Font.Style = []
  ShowHint = True
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 15
  object cb: TComboBox
    Left = 32
    Top = 24
    Width = 145
    Height = 23
    Style = csDropDownList
    ParentShowHint = False
    ShowHint = True
    TabOrder = 0
    OnChange = cbChange
  end
end
Besser wäre natürlich eine neue abzuleiten und in Delphi zu registrieren.
Bernd
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#10

AW: ComboBox Hint onItem?

  Alt 23. Dez 2021, 15:07
Hallo, kann man bei dem THintWindow irgendwie eine Verzögerung bevor der Hint angezeigt wird realisieren? Ein einfaches sleep ganz am Anfang der OnIdle Funktion tut es zwar gut, aber nur solange ich nur diese combobox habe und die Funktion bei anderen Fenstern nicht durchgelaufen wird.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz