AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ComboBox am Aufklappen hindern

Ein Thema von Shaman · begonnen am 10. Aug 2004 · letzter Beitrag vom 10. Aug 2004
Antwort Antwort
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#1

ComboBox am Aufklappen hindern

  Alt 10. Aug 2004, 11:00
Hallo zusammen

Wie kann ich verhindern, dass eine Combobox ihre Standardliste aufklappt? Stattdessen möchte ich nämlich eine eigene Komponente anzeigen lassen.

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
LeoDD

Registriert seit: 30. Jul 2003
43 Beiträge
 
Delphi 2010 Professional
 
#2

Re: ComboBox am Aufklappen hindern

  Alt 10. Aug 2004, 11:34
Bei der TCOmbobox gibts eine Eigenschaft DroppedDown

Code:
property DroppedDown: Boolean;
Im onDropDown Ereignis solltest du das auf false setzen können und die Liste wird nicht angezeigt.

Habs aber nicht getestet
Erst wenn man dreimal auf Holz klopfen will, stellt man fest, dass die Welt nur noch aus Plastik und Aluminium besteht.
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: ComboBox am Aufklappen hindern

  Alt 10. Aug 2004, 11:59
Hab ich auch schon probiert, funktioniert leider nicht...
Aber Danke trotzdem
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
AlphaBug

Registriert seit: 2. Mär 2004
Ort: hinterm Transistor 246 gleich links
46 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: ComboBox am Aufklappen hindern

  Alt 10. Aug 2004, 12:08
Mahlzeit !

Hallo Shaman,
So wie ich das verstehe wirst du nicht drumherum kommen, eine neue ComboBox zu entwickeln.
Ich hab' das schon mal gemacht. Wenn du einen Moment Zeit hast, suche ich mal den nötigen Code zusammen, um dir auf die Sprünge zu helfen.
Delphi 4ever !
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: ComboBox am Aufklappen hindern

  Alt 10. Aug 2004, 12:34
Hallo AlphaBug

Das wäre sehr nett
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
AlphaBug

Registriert seit: 2. Mär 2004
Ort: hinterm Transistor 246 gleich links
46 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: ComboBox am Aufklappen hindern

  Alt 10. Aug 2004, 12:37
Außer dem Ableiten einer eigenen ComboBox fällt mir nicht mehr viel ein.
(Vieleicht im DropDown-Event etwas basteln...)
Ich hoffe, diese Code-Schnipsel helfen dabei:

Delphi-Quellcode:
  TCustomCombo = class(TCustomListControl)
  private
    ...
    procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
    ...
  protected
    ...
    procedure AdjustDropDown; virtual;
    ...
  end;

  TCustomComboBox = class(TCustomCombo)
  ...

  TMyComboBox = class(TCustomComboBox)
  private
    ...
    procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
    ...
  protected
    ...
    procedure AdjustDropDown; override;
    ...
  end;

...

procedure TCustomCombo.CNCommand(var Message: TWMCommand);
begin
  case Message.NotifyCode of
    CBN_DBLCLK:
      DblClick;
    CBN_EDITCHANGE:
      Change;
    CBN_DROPDOWN:
      begin
        FFocusChanged := False;
        // DropDown-Event ausführen
        DropDown;
        // DropDown-Liste konfigurieren
        AdjustDropDown;
        if FFocusChanged then
        begin
          PostMessage(Handle, WM_CANCELMODE, 0, 0);
          if not FIsFocused then
            // DropDown-Liste anzeigen
            PostMessage(Handle, CB_SHOWDROPDOWN, 0, 0);
        end;
      end;
    CBN_SELCHANGE:
      begin
        Text := Items[ItemIndex];
        Click;
        Select;
      end;
    CBN_CLOSEUP:
      CloseUp;
    CBN_SETFOCUS:
      begin
        FIsFocused := True;
        FFocusChanged := True;
        SetIme;
      end;
    CBN_KILLFOCUS:
      begin
        FIsFocused := False;
        FFocusChanged := True;
        ResetIme;
      end;
  end;
end;


procedure TCustomCombo.AdjustDropDown;
var
  Count: Integer;
begin
  Count := ItemCount;
  if Count > DropDownCount then Count := DropDownCount;
  if Count < 1 then Count := 1;
  FDroppingDown := True;
  try
    SetWindowPos(FDropHandle, 0, 0, 0, Width, ItemHeight * Count +
      Height + 2, SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_NOREDRAW or
      SWP_HIDEWINDOW);
  finally
    FDroppingDown := False;
  end;
  SetWindowPos(FDropHandle, 0, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or
    SWP_NOZORDER or SWP_NOACTIVATE or SWP_NOREDRAW or SWP_SHOWWINDOW);
end;
Delphi 4ever !
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: ComboBox am Aufklappen hindern

  Alt 10. Aug 2004, 14:48
Danke, soweit bin ich auch schon gekommen. Aber egal welche Message ich blockiere, die Liste wird trotzdem gezeichnet. Ich habs jetzt wenigstens soweit, dass sie nur noch ein schwarzer Strich ist. Aber das ist ein ziemlicher Murks...
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
LeoDD

Registriert seit: 30. Jul 2003
43 Beiträge
 
Delphi 2010 Professional
 
#8

Re: ComboBox am Aufklappen hindern

  Alt 10. Aug 2004, 14:49
Hm, dann würd ich da keine Combobox hinsetzen. Ein Editfeld und ein Button mit Pfeil nach unten.
Erst wenn man dreimal auf Holz klopfen will, stellt man fest, dass die Welt nur noch aus Plastik und Aluminium besteht.
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:28 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