Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnDropDown(TCombobox) (https://www.delphipraxis.net/72703-ondropdown-tcombobox.html)

danku 5. Jul 2006 16:56


OnDropDown(TCombobox)
 
in einer combobox stehen 5einträge (5 datume? oder datums? :roll: )
sobald ein item angeklickt wurde, wird anhand von dem datum der tag auf einen button geschrieben.

Delphi-Quellcode:
ShortDateFormat := 'dddd';
  ...
datum := StrToDate(cbdatum.items[cbdatum.itemindex]);
Button2.Caption := DateToStr(datum);
Es wäre doch aber schon cooler, sobald man die Dropdownliste öffnet und darin navigiert, das (ähnlich wie mouseover also ohne anklicken) der tag auf den button steht.

Delphi-Quellcode:
...

begin
  with cbdatum do
  ShortDateFormat := 'dddd';

  days[1] := 'Sunday';
  ...
  datum := StrToDate(cbdatum.items[cbdatum.itemindex]);

  Button2.Caption := DateToStr(datum);
end;

Der_Unwissende 5. Jul 2006 21:14

Re: OnDropDown(TCombobox)
 
Hi,
Daten ist die Mehrzahl, ein Datum, zwei Daten. Gilt auch für die Daten in deinem Rechner, hier wäre die Einzahl Datum.

Da dies die einzigste von dir gestellte Frage war hoffe ich, die ist beantwortet :mrgreen:

Ob ein solcher Wechsel cooler ist oder nicht, darüber kann man streiten. Finde einen Button mit einem Datum drauf klingt irgendwie merkwürdig (aber ich kenne den Kontext nicht).

Gruß Der Unwissende

Christian Seehase 5. Jul 2006 21:34

Re: OnDropDown(TCombobox)
 
Moin Danku,

wenn Du mit Tasten oder Mausrad navigierst kannst Du das so machen:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    //...
    procedure WMCOMMAND(var Msg : TMessage); message WM_COMMAND;
    //...
  end;

implementation

procedure TForm1.WMCOMMAND(var Msg: TMessage);
begin
  if Msg.WParamHi = CBN_SELCHANGE then begin
    if ComboBox1.ItemIndex > -1 then begin
      Button1.Caption := ComboBox1.Items[ComboBox1.ItemIndex];
    end;
  end;
  inherited;
end;
Direkt mit MouseOver habe ich nichts gefunden.

danku 5. Jul 2006 22:09

Re: OnDropDown(TCombobox)
 
ja das geht. aber das anzeigen beim einzelnen markieren mit aktiver dropdownlist geht noch nicht so wie ich mir das vorstelle. naja mal sehen was ich noch machen kann.
morgen stelle ich das fertige programm vor.

marabu 6. Jul 2006 07:28

Re: OnDropDown(TCombobox)
 
Hallo Chris,

die Einschränkungen bei deinem Code machen deinen Ansatz eigentlich überflüssig, da das gleiche Ergebnis auch durch das Ereignis OnChange() der ComboBox erreicht werden kann:

Delphi-Quellcode:
procedure TDemoForm.DateComboChange(Sender: TObject);
begin
  with DateCombo do
  if ItemIndex > -1 then
    StatusBar.SimpleText := LongDayNames[DayOfWeek(StrToDate(Items[ItemIndex]))];
end;
Um auf die Mausbewegungen reagieren zu können muss man sich wohl den Fenstergriff der drop-down Liste mit CB_GETCOMBOBOXINFO besorgen und diesem Fenster eine eigene WindowProc unterschieben (subclassing).

Freundliche Grüße vom marabu


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