即在向某个“Edit”输入内容时,在其下面出现一提示框,提示框根据用户输入内容的改变,动态地显示在一个表中储存的以当前输入内容开头的所有记录,用户可在其中选择自己需要输入的内容。

解决方案 »

  1.   

    function EditComplete(mEdit: TEdit; mItems: TStrings;
      mCase: Boolean = True): Boolean;
    var
      I, T: Integer;
      vSubStr, S: string;
    begin
      Result := False;
      if (not Assigned(mEdit)) or (not Assigned(mItems)) then Exit;  vSubStr := mEdit.Text;
      if not mCase then vSubStr := UpperCase(vSubStr);
      for I := 0 to Pred(mItems.Count) do begin
        S := mItems[I];
        if not mCase then S := UpperCase(S);
        if (Pos(vSubStr, S) = 1) and (vSubStr <> S) then begin
          T := Length(vSubStr);
          mEdit.Text := mItems[I];
          mEdit.SelStart := T;
          mEdit.SelLength := Length(mItems[I]) - T;
          Result := True;
          Break;
        end;
      end;
    end; { EditComplete }procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      case Key of
        VK_BACK, VK_DELETE, VK_LEFT, VK_RIGHT, VK_DOWN, VK_UP: ;
      else EditComplete(TEdit(Sender), Memo1.Lines, False);
      end;
    end;
      

  2.   

    可以用ComboBox呀
    ComboBox.AutoComplete := true;
      

  3.   

    你可以改成用combobox,在combobox的oncheng中写:
    begin
      with query1 do
      begin
        close;
        sql.clear;
        sql.add('select * from tablename where fieldname like '+quotedstr     (combobox.text+'%'));
        open;
        first;
        while not eof do
        begin
          combobox.items.clear;
          combobox.items.add(fieldByname('fieldname').asstring);
          next;
        end;
      end;end;
      

  4.   

    有一个叫“wxjh(秋水居士)”的师兄说可以:写一个缓冲文件,输入一个后写入文件,并且读取以前的。
    我想问各位师兄师姐一下:
    ①.怎样“写一个缓冲文件”?
    ②.“输入一个后写入文件”是什么意思?
    ③.怎样“读取以前的”?
    具体应该怎样实现呢?
    谢谢!
      

  5.   

    zswang,不愧是高级潜水员。
    糟糕,我没有可用分了....