Zum Inhalt springen

Delphi Komponente selber erstellen


Michael_Kluetsch

Empfohlene Beiträge

Ich wünsche allen einen wunderschönen Freitag und hoffe das jemand in der Lage ist imr zu helfen.

Und zwar geht es um folgendes ich muss eine DelphiKomponente erstellen die von einer Combox abgeleitet wurde und nun die Fähigkeit erhalten soll in den vorhandenen

Items den eingegebenen Text zu suchen im Prinzip genau wie bei der Adressleiste des Internetexplorers.

Leider habe ich im Moment nur 2 Probleme damit:

1. Wie kann ich ein neues Ereignis definieren (z.B. OnTextinput, das dann greift, wenn der User etwas in die Textbox einträgt? Dies ist leider dringend notwendig, weil das original OnChange Ereignis bestehen bleiben muss.

2. In der jetzigen Version markiere ich den nicht selbst eingegeben Text ähnlich wie beim IE(s.O.) allerdings löscht er mir nur den markierten teil und nicht den von mir eingegebenen Buchstaben.

Danke im Vorraus !

Euer Michael

Hier ist der Quellcode:

unit SearchingComboBox;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TSearchingComboBox = class(TComboBox)

private

{ Private-Deklarationen }

bSearching: Boolean;

protected

{ Protected-Deklarationen }

public

{ Public-Deklarationen }

published

{ Published-Deklarationen }

procedure change; override;

Function Eingabepruefen(sEingabe: String): Boolean;

property Searching: Boolean read bSearching write bSearching default False;

end;

procedure Register;

implementation

procedure Register;

begin

RegisterComponents('Klu', [TSearchingComboBox]);

end;

procedure TSearchingComboBox.change;

begin

if Searching

then begin

if not Eingabepruefen(Text)

then ShowMessage('Kein Eintrag vorhanden');

end;

end;

Function TSearchingcomboBox.Eingabepruefen(sEingabe: String): Boolean;

Var

i: integer;

begin

result := false;

if (items.Count > 0) AND (sEingabe <> '')

then begin

for i:= 0 to items.Count -1 do

begin

if Pos(sEingabe, items) = 1

then begin

Text := items;

selStart := Length(Text)+1;

selLength := Length(sEingabe) - Length(Text);

result := true;

exit;

end;

end;

end else

result := true;

end;

end.

Link zu diesem Kommentar
Auf anderen Seiten teilen

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Michael_Kluetsch:

<STRONG>1. Wie kann ich ein neues Ereignis definieren (z.B. OnTextinput, das dann greift, wenn der User etwas in die Textbox einträgt? Dies ist leider dringend notwendig, weil das original OnChange Ereignis bestehen bleiben muss.

</STRONG>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...