Einzelnen Beitrag anzeigen

Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: ComboBox-Liste anzeigen ohne ComboBox

  Alt 22. Jan 2010, 14:59
Dafür ist diese Komponente halt einfach nicht gedacht

Delphi-Quellcode:
procedure TCustomComboBox.CNDrawItem(var Message: TWMDrawItem);
var
  State: TOwnerDrawState;
begin
  with Message.DrawItemStruct^ do
  begin
    State := TOwnerDrawState(LongRec(itemState).Lo);
    if itemState and ODS_COMBOBOXEDIT <> 0 then
      Include(State, odComboBoxEdit);
    if itemState and ODS_DEFAULT <> 0 then
      Include(State, odDefault);
    FCanvas.Handle := hDC; // <----------------------- Handle
    FCanvas.Font := Font;
    FCanvas.Brush := Brush;
    if (Integer(itemID) >= 0) and (odSelected in State) then
    begin
      FCanvas.Brush.Color := clHighlight;
      FCanvas.Font.Color := clHighlightText
    end;
    if Integer(itemID) >= 0 then
      DrawItem(itemID, rcItem, State) else
      FCanvas.FillRect(rcItem);
    if odFocused in State then DrawFocusRect(hDC, rcItem);
    FCanvas.Handle := 0;
  end;
end;
Hier sieht man das das Handle vom Canvas der Combox genommen wird. ( Bzw das Handle wird benutzt das dem Canvas zugewiesen wird, aber läuft ja im Endeffekt auf das gleiche hinaus ... )

Ne Listbox ist da im Endeffekt wohl einfach besser für geeignet

MfG Alaitoc
  Mit Zitat antworten Zitat