ComboBoxのドロップダウンリストの幅の変更


Form のOnActivate イベントに記述します。
procedure TForm1.FormActivate(Sender: TObject);
begin
   //ドロップダウンリストの幅を2倍にします
   Combobox1.Perform(CB_SETDROPPEDWIDTH,Combobox1.width * 2,0);
end;


ComboBoxを開閉するコード


ComboBox1.Perform(CB_SHOWDROPDOWN, 1, 0);  //開く場合
ComboBox1.Perform(CB_SHOWDROPDOWN, 0, 0);  //閉じる場合


ComboBoxにプリンタ名を割当てる


usesに Printers を追加して下さい。

ComboBox1.Items.Assign(Printer.Printers);


ComboBoxに入力し、リストに追加する


//ComboBoxのKeyPressイベント
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
var
  S: string;
  i: Integer;
  cmBox:TComboBox;
begin
  if Key=chr(VK_RETURN) then begin //Enterキーで登録
    cmBox:=TComboBox(Sender);
    S:=cmBox.Text;
    if S<>'' then begin
      i:=cmBox.Items.IndexOf(S);
      if i >= 0
        then begin
          cmBox.Items.Move(i,0);    //同じものがあれば最上行に移動
          cmBox.Text:=cmBox.Items[0];
        end
        else cmBox.Items.Insert(0,S); //新規は最上行に挿入 最下行に追加する時は cmBox.Items.Add(S);
    end;
    Key:=#0;
  end;
end;


ComboBoxのリストをFILEに書き出す


//二つのComboBoxとListBoxのリストをテキストファイル「List.txt」に書き出します
private
	procedure Write_List;
・
・
procedure TForm1.Write_List;
var stList: TStringList;
begin
  stList:=TStringList.Create;
  try
    stList.Clear;
    stList.Add('[List1]');
    stList.AddStrings(ComboBox1.Items);
    stList.Add('[List2]');
    stList.AddStrings(ComboBox2.Items);
    stList.Add('[ListBox用]');
    stList.AddStrings(ListBox1.Items);
    stList.SaveToFile(ExtractFilePath(Application.ExeName)+'List.txt');
//  stList.SaveToFile(ExtractFilePath(Application.ExeName)+'List.txt', TEncoding.Unicode);   //Delphi2009
  finally
    stList.Free;
  end;
end;


ComboBoxのリストにFILEから読込む


//二つのComboBoxとListBoxのリストにテキストファイル「List.txt」から読込みます
private
	procedure Read_List;
・
・
procedure TForm1.Read_List;
var
  stList: TStringList;
  i , ListNumber: Integer;
begin
  stList:=TStringList.Create;
  try
    try
      stList.LoadFromFile(ExtractFilePath(Application.ExeName)+'List.txt');
      ListNumber:=0;
      for i:=0 to stList.Count-1 do begin
        if stList[i]='[List1]' then begin
          ListNumber:=1;
          ComboBox1.Clear;
          Continue;
        end;
        if stList[i]='[List2]' then begin
          ListNumber:=2;
          ComboBox2.Clear;
          Continue;
        end;
        if stList[i]='[ListBox用]' then begin
          ListNumber:=3;
          ListBox1.Clear;
          Continue;
        end;
        case ListNumber of {各Listへ格納}
          1: ComboBox1.Items.Add(stList[i]);
          2: ComboBox2.Items.Add(stList[i]);
          3: ListBox1.Items.Add(stList[i]);
        end;
      end;
    except
      on EFOpenError do ShowMessage('リストの読込みに失敗しました');
    end;
  finally
    stList.Free;
  end;
end;


ページトップ