AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Automatische Vervollständigung bei Eingabe?

Ein Thema von mandumoal · begonnen am 26. Sep 2003 · letzter Beitrag vom 28. Sep 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#11

Re: Automatische Vervollständigung bei Eingabe?

  Alt 27. Sep 2003, 18:41
Hallo mandumoal,

AutoFill für ComboBox, das hatten wir schon: DP Suche AutoFill für Combobox

Wenn das nicht weiterhilft, dann vielleicht das:
Delphi-Quellcode:
unit ComboBoxAF; //ComboBox AutoFill

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TComboBoxAF = class(TComboBox)
  private
    { Private-Deklarationen }
    FAutoFill : Boolean;
    function GetAutoFill : Boolean;
    procedure SetAutoFill(value : Boolean);
  protected
    { Protected-Deklarationen }
    procedure ComboWndProc(var Message: TMessage; ComboWnd: HWnd;
                                                  ComboProc: Pointer); override;

  public
    { Public-Deklarationen }
    constructor Create(aOwner: TComponent); override;
    Destructor Destroy; override;
  published
    { Published-Deklarationen }
    property AutoFill : Boolean read GetAutoFill write SetAutoFill;
  end;

procedure Register;

implementation

procedure TComboBoxAF.ComboWndProc(var Message: TMessage; ComboWnd: HWnd;
                                                            ComboProc: Pointer);
var
  I: Integer;
  s: String;
begin
  inherited ComboWndProc(Message, ComboWnd, ComboProc);
  if not FAutoFill then Exit;
  // first check whether the backspace key was pressed, we do not fill in
  // in such case!
  if Message.Msg = WM_CHAR then begin
    // all characters from 32 (Space) through 127 (Upper ANSI) are matched
    if TWMChar(Message).CharCode in [$20..$7F] then begin
      // fill in the rest of the text
      // save the current text, the user has typed
      s := Text;
      // get the first string, matching the text partially
      I := SendMessage(Handle, CB_FINDSTRING, -1, LongInt(PChar(s)));
      if I >= 0 then begin
        // match found!
        // load matching text, I is the position of the matching string
        Text := Items.Strings[I];
        // select the text beyond the text typed
        SelStart := Length(s);
        SelLength := Length(Text) - Length(s);
      end;
    end;
  end;
end;


function TComboBoxAF.GetAutoFill : Boolean;
begin
  Result := FAutoFill;
end;

procedure TComboBoxAF.SetAutoFill(value : Boolean);
begin
  FAutoFill := value;
end;

constructor TComboBoxAF.Create(aOwner: TComponent);
begin
  inherited Create(aOwner);
  FAutoFill := true;
  Sorted := true;
end;

Destructor TComboBoxAF.Destroy;
Begin
  inherited Destroy;
End;

procedure Register;
begin
  RegisterComponents('Beispiele', [TComboBoxAF]); //
end;

end.
Ist mein letzter Bearbeitungsstand und funktioniert.

mfg
eddy

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
  Mit Zitat antworten Zitat
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#12

Re: Automatische Vervollständigung bei Eingabe?

  Alt 27. Sep 2003, 19:43
Hi!

Ertsmal Vielen Dank für die Antworten!

Ich hab mal die Methode von eddy probiert und bin echt begeistert!
Danke!

Was wäre denn eurer Meinung nach die Beste Methode um Eintäge in die Combobox die noch nicht exsistieren zu den Items hinzuzufügen?
Die Items in einer Datei Speichern, beim Start laden und bei neuer eingabe zu Items hinzufügen und bei Beenden wieder in die Datei speichern (mittels Streams)?
Wäre das gut oder schlagt ihr was anderes vor?

mfg mandumoal
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#13

Re: Automatische Vervollständigung bei Eingabe?

  Alt 28. Sep 2003, 10:06
Jupp mittels Stream oder wenn es nicht all zu viele sind mittels INI-DAtei
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#14

Re: Automatische Vervollständigung bei Eingabe?

  Alt 28. Sep 2003, 10:23
Zitat von mandumoal:
Was wäre denn eurer Meinung nach die Beste Methode um Eintäge in die Combobox die noch nicht exsistieren zu den Items hinzuzufügen?
Die Items in einer Datei Speichern, beim Start laden und bei neuer eingabe zu Items hinzufügen und bei Beenden wieder in die Datei speichern (mittels Streams)?
Wäre das gut oder schlagt ihr was anderes vor?
Hrm. Also meine erste Idee wäre die Registry unter HKCU.
Ich würde eine standard - Liste der möglichen Einträge per .reg - File mitliefern. Das hat meines Erachtens den grossen Vorteil, daß die Einträge auf dem Zielrechner dann User-Spezifisch gespeichert werden.

Beispiel: (Ich weiss ja jetzt nicht, was das Ding hinterher machen soll, deswegen einfach mal fiktiv) User 1 benutzt das Ding hauptsächlich um Werte aus dem Fachgebiet Medizin einzugeben, User 2 nur für Computer-Begriffe. Wenn User 2 jetzt 'Kernel' eingeben will, und ihm bei "Ker" dann schon "Kernspintomograph" (war mal ne Eingabe von User 1) vorgeschlagen wird dürfte der ziemlich baff sein

Deswegen neben einem Standard-Wörterbuch nur noch Userspezifisch abspeichern. Die Registry empfiehlt sich hier eben sehr gut. In dem Moment biete ich in meinen Tool übrigens immer die Option "persönliche Einstellungen exportieren" an, die eben den kompletten Registry-Key in eine .reg exportiert. So kann man die sehr einfach sichern und auch mitnehmen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#15

Re: Automatische Vervollständigung bei Eingabe?

  Alt 28. Sep 2003, 15:04
HI!

Also es soll eigentlich nicht viele verschiedene Bereiche geben(Medizin,Computer...)
sondern nur um Mitarbeiter auszuwählen und eben gegebenfalls einen neuen einzugeben oder am anfang gar keine Items zu haben damit die Vervollständigung immer so aussieht wie der Benutzer sie zum ersten Mal eingegeben hat.

Wie liese sich denn das mit INI machen?
Muss ich einfach nur die Daten per Stream in ner INI speichern und dann wieder auslesen oder was kann man mit ner INI machen was mit zum Beispiel nem TXT nicht geht?
(Ach ja: Mit der Registry war zwar ne gute Idee aber ich wollte sowas eigentlich nicht machen weil sich manche aufregen, dass schon jedes kleinste Prog die Registry zukleistert)

mfg mandumoal
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Automatische Vervollständigung bei Eingabe?

  Alt 28. Sep 2003, 15:06
Moin mandumoal,

zum Thema Ini schau mal in der Hilfe nach TIniFile.
Eine Suche hier nach Hier im Forum suchenTIniFile sollte auch einige Fundstellen bringen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz