| 
   
    | ...einen Input Dialog mit einer ComboBox realisieren? |   
    | Autor: 
      Schatzl Reinhard |  | [ Tip ausdrucken ] |  |  |  
 
 
 
 
 
{ Input ComboBox dialog }//einen Input Dialog mit ComboBox realisieren, like InputBox,-Query Function
 //an input dialog with combo box realize, like input box,-Query Function
 
 function InputCombo(const ACaption, APrompt: string; const AList: TStrings): string;
 
 function GetCharSize(Canvas: TCanvas): TPoint;
 var
 I: Integer;
 Buffer: array[0..51] of Char;
 begin
 for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
 for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
 GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
 Result.X := Result.X div 52;
 end;
 
 var
 Form: TForm;
 Prompt: TLabel;
 Combo: TComboBox;
 DialogUnits: TPoint;
 ButtonTop, ButtonWidth, ButtonHeight: Integer;
 begin
 Result := '';
 Form   := TForm.Create(Application);
 with Form do
 try
 Canvas.Font := Font;
 DialogUnits := GetCharSize(Canvas);
 BorderStyle := bsDialog;
 Caption     := ACaption;
 ClientWidth := MulDiv(180, DialogUnits.X, 4);
 Position    := poScreenCenter;
 Prompt      := TLabel.Create(Form);
 with Prompt do
 begin
 Parent   := Form;
 Caption  := APrompt;
 Left     := MulDiv(8, DialogUnits.X, 4);
 Top      := MulDiv(8, DialogUnits.Y, 8);
 Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
 WordWrap := True;
 end;
 Combo := TComboBox.Create(Form);
 with Combo do
 begin
 Parent := Form;
 Style  := csDropDownList;
 //für Eingabemöglichkeit in Combo verwende
 //For input possibility in combo uses
 //Style := csDropDown;
 Items.Assign(AList);
 ItemIndex := 0;
 Left      := Prompt.Left;
 Top       := Prompt.Top + Prompt.Height + 5;
 Width     := MulDiv(164, DialogUnits.X, 4);
 end;
 ButtonTop    := Combo.Top + Combo.Height + 15;
 ButtonWidth  := MulDiv(50, DialogUnits.X, 4);
 ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
 with TButton.Create(Form) do
 begin
 Parent      := Form;
 Caption     := 'OK';
 ModalResult := mrOk;
 default     := True;
 SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
 ButtonHeight);
 end;
 with TButton.Create(Form) do
 begin
 Parent      := Form;
 Caption     := 'Abbrechen';
 ModalResult := mrCancel;
 Cancel      := True;
 SetBounds(MulDiv(92, DialogUnits.X, 4), Combo.Top + Combo.Height + 15,
 ButtonWidth, ButtonHeight);
 Form.ClientHeight := Top + Height + 13;
 end;
 if ShowModal = mrOk then
 begin
 Result := Combo.Text;
 end;
 finally
 Form.Free;
 end;
 end;
 
 //Beispiel
 //Example
 procedure TForm1.Button1Click(Sender: TObject);
 var
 List: TStringList;
 begin
 List := TStringList.Create;
 try
 List.Add('Auswahl1');
 List.Add('Auswahl2');
 List.Add('Auswahl3');
 
 //Beispielaufruf der Funktion
 //Example call of the function
 Label1.Caption := InputCombo('Input Combo', 'Caption', List);
 finally
 List.Free;
 end;
 end;
 
 
 
 
   
   
    | 
         
          | Bewerten Sie diesen Tipp: |  |  |