- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 

Addera kryssrutor i en TComboBox Kategori: Komponenter
Inlagt: 2006-12-23
Läst: 1186
Inlagt av: Staffan Berg
Beskrivning
Detta exempel lägger till kryssrutor i en TComboBox.
Kod
//Set ComboBox.Style:=csOwnerDrawFixed 
//tested with D6 and WinXP... 
 
 //..... 
 private 
  Selected: array of Boolean; 
 //..... 
 
 
procedure TTForm1.ComboBox1DrawItem(Control: TWinControl; 
   Index: Integer; Rect: TRect; State: TOwnerDrawState); 
begin 
 SetLength(Selected, TComboBox(Control).Items.Count); 
 with TComboBox(Control).Canvas do 
 begin 
  FillRect(rect); 
 
  Rect.Left := Rect.Left + 1; 
  Rect.Right := Rect.Left + 13; 
  Rect.Bottom := Rect.Bottom; 
  Rect.Top := Rect.Top; 
 
  if not (odSelected in State) and (Selected[Index]) then 
   DrawFrameControl(Handle, Rect, DFC_BUTTON, 
    DFCS_BUTTONCHECK or DFCS_CHECKED or DFCS_FLAT) 
  else if (odFocused in State) and (Selected[Index]) then 
   DrawFrameControl(Handle, Rect, DFC_BUTTON, 
    DFCS_BUTTONCHECK or DFCS_CHECKED or DFCS_FLAT) 
  else if (Selected[Index]) then 
   DrawFrameControl(Handle, Rect, DFC_BUTTON, 
    DFCS_BUTTONCHECK or DFCS_CHECKED or DFCS_FLAT) 
  else if not (Selected[Index]) then 
   DrawFrameControl(Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_FLAT); 
 
  TextOut(Rect.Left + 15, Rect.Top, TComboBox(Control).Items[Index]); 
 end; 
end; 
 
procedure TForm1.ComboBox1Select(Sender: TObject); 
var 
 i: Integer; 
 Sel: string ; 
begin 
 Sel := EmptyStr; 
 Selected[TComboBox(Sender).ItemIndex] := not Selected[TComboBox(Sender).ItemIndex]; 
 for i := 0 to TComboBox(Sender).Items.Count - 1 do 
  if Selected[i] then 
   Sel := Sel + TComboBox(Sender).Items[i] + ' '; 
 ShowMessage(Sel); //Just for test... 
end; 

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -