Entwickler-Ecke

Sonstiges (Delphi) - ListboxEintrag mit Editfeld vergleichen.


Cyberstarmh - Mi 13.02.08 11:10
Titel: ListboxEintrag mit Editfeld vergleichen.
Hallo,
Ich schreibe gerade ein Telefonverwaltungsprogramm.
Es ist fast fertig, nur die Suchfunktion sorgt für Kopfschmerzen.
Kann mir jemand helfen? ---->

Was habe ich:
(Developerstudio 2006 Turbo Delphi)
-drei Editfelder die zusammengefügt in eine Listbox eingetragen werden
-Vorname , Nachname , Telefonnummer (ergeben einen Eintrag in der Listbox)
-Hinzufügen und löschen funktioniert alles
-er speichert alles ab in TXT.

Was will ich machen:
Problem:
-ich möchte durch die Eingabe in ein EditFeld Übereinstimmungen suchen und finden
-der Eintrag soll in der Listbox markiert werden
-ein Panel soll erscheinen mit dem Hinweis 'Übereinstimmung gefunden'

Danke an Alle die sich die Mühe machen.
MfG Cyberstarmh

Moderiert von user profile iconjasocul: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 13.02.2008 um 11:11


zuma - Mi 13.02.08 11:26

was willst du denn genau vergleichen ?
nur den vornamen oder nur nachname, etc ?
den ganzen Eintrag ?
nur vorname:
schau dir mal pos() an
ganzer eintrag
am einfachsten mit
Liste durchlaufen und per
(suchtext = listbox.strings[i])
bzw
(uppercase(suchtext) = uppercase(listbox.strings[i]))
die einträge vergleichen, wobei du natürlich drauf achten musst,
das du den suchtext im selben format aufbaust, wie die einträge
in der listbox und auch die Gross/Kleinschreibung bedenken solltest.


Blackheart666 - Mi 13.02.08 11:31

ListBox.Items.IndexOf wäre auch noch eine Möglichkeit.


Cyberstarmh - Mi 13.02.08 12:13

Die 'strings[i]' gibt er mir als undefinierter Bezeichner aus.
Woran liegt das?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Suchen;
var
i: Integer;
wort1:string;
wort2:string;
begin
Wort1:=edVorname.text;
Wort2:=listboxAnzeige.strings[i];
(uppercase(Wort1) = uppercase(listboxAnzeige.strings[i]));
if ListboxAnzeige.items[ListboxAnzeige.items.indexof]=edVorname.text then
begin
Showmessage('Übereinstimmung gefunden!');
end;
end;


Und danke für die guten Vorschlage

Moderiert von user profile iconjasocul: Delphi-Tags hinzugefügt


nagel - Mi 13.02.08 12:16

items[i] sollte das wohl heißen.


Cyberstarmh - Mi 13.02.08 12:32

Wie solls auch anders sein.
Ist das eine Problem behoben, taucht auch gleich ein Neues auf.

In der Zeile mit (uppercase......[Fehler: Anweisung erwartet aber Ausdruck vom Typ Boolean gefunden]

In der Zeile if ListboxAnzeige.......... [Fehler: nicht genügend wirkliche Parameter]


Blackheart666 - Mi 13.02.08 12:59


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if ListBox1.Items.IndexOf(Edit1.Text)<>-1
  then
  ShowMessage('Gefunden')
  else
  ShowMessage('Nicht Gefunden')
end;


Cyberstarmh - Mi 13.02.08 13:18

Passiert gar nichts.


Xong - Mi 13.02.08 13:32

user profile iconCyberstarmh hat folgendes geschrieben:
Passiert gar nichts.

... ist keine Fehlerbeschreibung.


Cyberstarmh - Mi 13.02.08 13:46

Die trifft es aber ganz genau.
Ich bekomm keine Fehlermeldung und auch keine Message, egal in welcher Form ich das gesuchte Wort eingebe.


Xentar - Mi 13.02.08 14:11

Wenn du GAR KEINE Message bekommst, machst du irgendwas grundlegendes falsch, da es sich hierbei um eine einfache if-abfrage handelt, und in beiden der zwei möglichen Fällen etwas angezeigt wird. (d.h. du solltest zumindest die Message aus dem else-Teil sehen).

Hast du den Code auch im richtigen Event stehen, also im OnClick des Buttons?


Cyberstarmh - Mi 13.02.08 14:28

Ich werd mir das mal nochmal angucken.
Es ist sicherlich sehr viel ist, aber fals sich das jemand anguckt und mir trotzdem noch hilft. Danke
Wie schon gesagt, die Suchfunktion funktioniert nicht.
Siehe Zeile : 86,112,245-248 und 494-517. THX

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
unit mTelefonverwaltung;

interface

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

type
  TForm1 = class(TForm)
    lbUeberschrift: TLabel;
    lbVorname: TLabel;
    lbNachname: TLabel;
    edVorname: TEdit;
    edNachname: TEdit;
    edTelefonnummer: TEdit;
    lbTelefonnummer: TLabel;
    ListBoxAnzeige: TListBox;
    btSchliessen: TButton;
    btNeu: TButton;
    btSuchen: TButton;
    btHinzufuegen: TButton;
    btLoeschen: TButton;
    lbTelefonverwaltunsliste: TLabel;
    rbGruen: TRadioButton;
    rbRot: TRadioButton;
    rbBlau: TRadioButton;
    rbGelb: TRadioButton;
    plEnde: TPanel;
    EndeTimer: TTimer;
    plLogin: TPanel;
    edPasswortLogin: TEdit;
    edNameLogin: TEdit;
    lbNameLogin: TLabel;
    lbPasswortLogin: TLabel;
    btLogin: TButton;
    btSchliessenLogin: TButton;
    plHinweis: TPanel;
    plHinweis2: TPanel;
    procedure btSchliessenClick(Sender: TObject);
    procedure btNeuClick(Sender: TObject);
    procedure btHinzufuegenClick(Sender: TObject);
    procedure btLoeschenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure EndeTimerTimer(Sender: TObject);
    procedure btLoginClick(Sender: TObject);
    procedure btSchliessenLoginClick(Sender: TObject);
    procedure btLoeschenMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure btLoeschenMouseLeave(Sender: TObject);
    procedure btHinzufuegenMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure btHinzufuegenMouseLeave(Sender: TObject);
    procedure btSuchenMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure btSuchenMouseLeave(Sender: TObject);
    procedure btLoginMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure btLoginMouseLeave(Sender: TObject);
    procedure btSchliessenLoginMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure btSchliessenLoginMouseLeave(Sender: TObject);
    procedure ListBoxAnzeigeMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure ListBoxAnzeigeMouseLeave(Sender: TObject);
    procedure btNeuMouseLeave(Sender: TObject);
    procedure btNeuMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure btSchliessenMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure btSchliessenMouseLeave(Sender: TObject);
    procedure rbRotClick(Sender: TObject);
    procedure rbBlauClick(Sender: TObject);
    procedure rbGruenClick(Sender: TObject);
    procedure rbGelbClick(Sender: TObject);
    procedure rbGruenMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure rbGruenMouseLeave(Sender: TObject);
    procedure rbRotMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure rbRotMouseLeave(Sender: TObject);
    procedure rbGelbMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure rbGelbMouseLeave(Sender: TObject);
    procedure ListBoxAnzeigeClick(Sender: TObject);
    procedure btSuchenClick(Sender: TObject);
    procedure rbBlauMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure edNameLoginMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure edNameLoginMouseLeave(Sender: TObject);
    procedure edPasswortLoginMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure edPasswortLoginMouseLeave(Sender: TObject);
    procedure rbBlauMouseLeave(Sender: TObject);
  private
    procedure Loeschen;
    procedure Schliessen;
    procedure Hinzufuegen;
    procedure Login;
    procedure SchliessenLogin;
    Procedure Suchen;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    end;

var
  Form1: TForm1;
  Name,Vorname,Telefonnummer:string;
  Eintragzaehler,Doppeleintrag:integer;

implementation

{$R *.dfm}

// Ereignismethoden oder Ereignisprozeduren----------------------------------------------------------------------------------------

procedure TForm1.FormCreate(Sender: TObject);
begin
plEnde.visible:=false;
lbVorname.visible:=false;
lbNachname.visible:=false;
edVorname.visible:=false;
edNachname.visible:=false;
edTelefonnummer.visible:=false;
lbTelefonnummer.visible:=false;
ListBoxAnzeige.visible:=false;
btSchliessen.visible:=false;
btNeu.visible:=false;
btSuchen.visible:=false;
btHinzufuegen.visible:=false;
btLoeschen.visible:=false;
lbTelefonverwaltunsliste.visible:=false;
rbGruen.visible:=false;
rbRot.visible:=false;
rbBlau.visible:=false;
rbGelb.visible:=false;
plEnde.visible:=false;
plHinweis.visible:=false;
plLogin.visible:=true;
edPasswortLogin.visible:=true;
edNameLogin.visible:=true;
lbNameLogin.visible:=true;
lbPasswortLogin.visible:=true;
btLogin.visible:=true;
plHinweis2.Visible:=true;

if (FileExists(ExtractFilePath(Application.ExeName)+'Telefonliste.txt ')) then
begin
ListboxAnzeige.items.LoadFromFile(ExtractFilePath(Application.ExeName)+'Telefonliste.txt' )
end;
end;

procedure TForm1.btHinzufuegenMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.btHinzufuegenMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.Visible:=true;
plHinweis.caption:='Hier können Sie Einträge ihrer Telefonliste hinzufügen oder bearbeiten.';
end;

procedure TForm1.btLoeschenClick(Sender: TObject);
begin
Loeschen;
end;

procedure TForm1.btLoeschenMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.btLoeschenMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Hier können Sie alle Einträge oder auch nur einen einzelnen Eintrag der Telefonliste löschen.';
end;

procedure TForm1.btLoginClick(Sender: TObject);
begin
login;
end;

procedure TForm1.btLoginMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.btLoginMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.Visible:=true;
plHinweis.caption:='Bitte diesen Knopf betätigen, wenn Sie ihre Logindaten eingegeben haben.';
end;

procedure TForm1.btSchliessenClick(Sender: TObject);
begin
Schliessen;
end;

procedure TForm1.btSchliessenLoginClick(Sender: TObject);
begin
SchliessenLogin;
end;

procedure TForm1.btSchliessenLoginMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.btSchliessenLoginMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Hier könnne sie das Programm sofort beenden.';
end;

procedure TForm1.btSchliessenMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.btSchliessenMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Hier können Sie das Programm beenden und speichern.';
end;

procedure TForm1.btSuchenClick(Sender: TObject);
begin
Suchen;
end;

procedure TForm1.btSuchenMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.btSuchenMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.Visible:=true;
plHinweis.caption:='Hier können Sie Einträge suchen lassen. Bitte geben Sie den Suchbegriff in das Feld Vorname ein.';
end;

procedure TForm1.edNameLoginMouseLeave(Sender: TObject);
begin
plHinweis.Visible:=false;
end;

procedure TForm1.edNameLoginMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Geben Sie hier bitte ihren Benuzernamen ein.';
end;

procedure TForm1.edPasswortLoginMouseLeave(Sender: TObject);
begin
plHinweis.Visible:=false;
end;

procedure TForm1.edPasswortLoginMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Geben Sie hier bitte ihr Passwort ein.';
end;

procedure TForm1.btHinzufuegenClick(Sender: TObject);
begin
Hinzufuegen;
end;

procedure TForm1.btNeuClick(Sender: TObject);
begin
edVorname.Clear;
edNachname.Clear;
edTelefonnummer.Clear;
end;

procedure TForm1.btNeuMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.btNeuMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Hier löschen Sie ihre Eingaben unter Vorname, Nachname und Telefonnummer.';
end;

procedure TForm1.rbBlauClick(Sender: TObject);
begin
color:=clblue;
end;

procedure TForm1.rbBlauMouseLeave(Sender: TObject);
begin
plHinweis.Visible:=false;
end;

procedure TForm1.rbBlauMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Hier ändern Sie die Formularfarbe in Blau.';
end;

procedure TForm1.rbGelbClick(Sender: TObject);
begin
color:=clyellow;
end;

procedure TForm1.rbRotClick(Sender: TObject);
begin
color:=clred;
end;

procedure TForm1.rbGruenClick(Sender: TObject);
begin
color:=clgreen;
end;

procedure TForm1.rbGelbMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.rbGelbMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 plHinweis.visible:=true;
plHinweis.caption:='Hier Hier ändern Sie die Formularfarbe in Gelb.';
end;

procedure TForm1.rbGruenMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.rbGruenMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Hier ändern Sie die Formularfarbe in Grün.';
end;

procedure TForm1.rbRotMouseLeave(Sender: TObject);
begin
plHinweis.visible:=false;
end;

procedure TForm1.rbRotMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Hier Hier ändern Sie die Formularfarbe in Rot.';
end;

procedure TForm1.ListBoxAnzeigeMouseLeave(Sender: TObject);
begin
plHinweis.Visible:=false;
end;

procedure TForm1.ListBoxAnzeigeMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
plHinweis.visible:=true;
plHinweis.caption:='Hier wird ihre Telefonliste angezeigt.';
end;
//selbstdefinierte oder objektorientierte Prozeduren-----------------------------------------------------------------------

procedure TForm1.Login;
var LoginDaten:string;
begin
LoginDaten:=edNameLogin.text+edPasswortLogin.text;
if LoginDaten='Matthiasrsgt'
then
begin
plEnde.visible:=true;
lbVorname.visible:=true;
lbNachname.visible:=true;
edVorname.visible:=true;
edNachname.visible:=true;
edTelefonnummer.visible:=true;
lbTelefonnummer.visible:=true;
ListBoxAnzeige.visible:=true;
btSchliessen.visible:=true;
btNeu.visible:=true;
btSuchen.visible:=true;
btHinzufuegen.visible:=true;
btLoeschen.visible:=true;
lbTelefonverwaltunsliste.visible:=true;
rbGruen.visible:=true;
rbRot.visible:=true;
rbBlau.visible:=true;
rbGelb.visible:=true;
plEnde.visible:=false;
plLogin.visible:=false;
edPasswortLogin.visible:=false;
edNameLogin.visible:=false;
lbNameLogin.visible:=false;
lbPasswortLogin.visible:=false;
btLogin.visible:=false;
btSchliessenLogin.Visible:=false;
end else
if LoginDaten='Floriangbhdt'
then
begin
plEnde.visible:=true;
lbVorname.visible:=true;
lbNachname.visible:=true;
edVorname.visible:=true;
edNachname.visible:=true;
edTelefonnummer.visible:=true;
lbTelefonnummer.visible:=true;
ListBoxAnzeige.visible:=true;
btSchliessen.visible:=true;
btNeu.visible:=true;
btSuchen.visible:=true;
btHinzufuegen.visible:=true;
btLoeschen.visible:=true;
lbTelefonverwaltunsliste.visible:=true;
rbGruen.visible:=true;
rbRot.visible:=true;
rbBlau.visible:=true;
rbGelb.visible:=true;
plEnde.visible:=false;
plLogin.visible:=false;
edPasswortLogin.visible:=false;
edNameLogin.visible:=false;
lbNameLogin.visible:=false;
lbPasswortLogin.visible:=false;
btLogin.visible:=false;
btSchliessenLogin.Visible:=false;
end else
begin
  Showmessage('Logindaten sind fehlerhaft!');
end;
end;

 procedure TForm1.Suchen;
begin  
  if ListBoxAnzeige.Items.IndexOf(edVorname.Text)<>-1
  then  
  ShowMessage('Gefunden')  
  else  
  ShowMessage('Nicht Gefunden')  
end

{procedure TForm1.Suchen;
begin

end;
var
i: Integer;
wort1:string;
wort2:string;
begin
Wort1:=edVorname.text;
Wort2:=listboxAnzeige.items[i];
(uppercase(Wort1) = uppercase(listboxAnzeige.items[i]));
if ListboxAnzeige.items[ListboxAnzeige.items.indexof] = edVorname.text then
begin
Showmessage('Übereinstimmung gefunden!');
end;
end; }


procedure TForm1.Hinzufuegen;
var
  i: Integer;
begin
Name:=edNachname.Text;
Vorname:=edVorname.text;
Telefonnummer:=edTelefonnummer.text;
Doppeleintrag:=0;
Eintragzaehler:=0;
for i := 0 to ListBoxAnzeige.Count - 1 do
begin
  if Vorname+' '+Name+' '+Telefonnummer= ListBoxAnzeige.items[i] then
  begin
  Doppeleintrag:=1;
  ListBoxAnzeige.itemindex:=i;
  Showmessage('Eintrag schon vorhanden!');
  end;
  
end;
if Vorname+Name+Telefonnummer='' then
begin
Doppeleintrag:=1;
showmessage('Bitte geben Sie einen vollständigen Eintrag ein.');
end else
begin
if Name='' then
begin
  Doppeleintrag:=1;
  Showmessage('Bitte geben Sie einen Nachnamen ein.');
end;
if Vorname='' then
begin
Doppeleintrag:=1;
Showmessage('Bitte geben Sie einen Vornamen ein.');
end;
if Telefonnummer='' then
begin
Doppeleintrag:=1;
Showmessage('Bitte geben Sie eine Telefonnummer ein.');
end;
if Doppeleintrag=0 then
begin
  ListBoxAnzeige.Items.Add(Vorname+' '+Name+' '+Telefonnummer);
  Eintragzaehler:=Eintragzaehler+1;
  end;
end;
end;

procedure TForm1.ListBoxAnzeigeClick(Sender: TObject);
var Kontakt:string;
    position:integer;
begin
if ListBoxAnzeige.ItemIndex > -1 then
begin
  Kontakt:=ListBoxAnzeige.Items[ListboxAnzeige.itemindex];
  position:=POS(' ',Kontakt);
  edVorname.Text:=Copy(Kontakt,1,position-1);
  Delete(Kontakt,1,position+0);
  position:=POS(' ',Kontakt);
  edNachname.Text:=Copy(Kontakt,1,position-1);
  Delete(Kontakt,1,position+0);
  position:=POS(' ',Kontakt);
  edTelefonnummer.Text:=Copy(Kontakt,position+1,length(Kontakt));
  end;
end;

procedure TForm1.Loeschen;
var
  i: Integer;
begin
if MessageDLG('Wollen Sie die ganze Liste löschen?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then
begin
ListBoxAnzeige.Items.Clear;
Eintragzaehler:=Eintragzaehler+1;
ListboxAnzeige.Items.savetofile(ExtractFilePath(Application.ExeName)+'Telefonliste.txt') ;
end else
if ListBoxAnzeige.ItemIndex < 0 then
begin
  Showmessage('Bitte wählen Sie den zu löschenden Eintrag aus.');
  end else
  if ListBoxAnzeige.ItemIndex <> -1 then
begin
  if MessageDLG('Wollen Sie den Eintrag wirklich löschen?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then
  begin
    with ListboxAnzeige do
    begin    i := 0;
    while(i <= Items.Count - 1and (SelCount > 0do begin
    while (i <= Items.Count - 1and Selected[i] do
    Items.Delete(i);
    inc(i);
    end;
    end;
end;
end;
end;

Procedure TForm1.SchliessenLogin;
begin
if MessageDLG('Möchten Sie das Programm wirklich beenden?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then
begin
close;
end;
end;

procedure TForm1.Schliessen;
begin
 if MessageDLG('Möchten Sie die Daten speichern?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then
begin
ListboxAnzeige.Items.savetofile(ExtractFilePath(Application.ExeName)+'Telefonliste.txt' );
end;
if MessageDLG('Möchten Sie das Programm wirklich beenden?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then
begin
//EndeTimer.Enabled:=true;
//plEnde.Visible:=true;
close; // entfernen wenn Timer funktioniert
end;
end;

//Problem mit Timer, deaktiviert, siehe Schliessen
procedure TForm1.EndeTimerTimer(Sender:TObject);
begin
close;
end;

end.


Tarry - Mi 13.02.08 16:02

Hi,
ich hab in deinem Code leider nicht die relevanten Teile gefunden, aber Versuche doch mal das hier, hat bei meinem Wecker auch prima geklappt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var i: integer;
begin
for i := 0 to ListBox1.Count -1
do begin
    if ListBox1.Items[i] = 'MeinText'
    then ListBox1.ItemIndex := i;
   end;
end;


Der Code sucht nun nach Übereinstimmungen mit 'MeinText' und markiert den gefundenen Eintrag.

Gruß
Tarry

PS: Den EIntragszähler kannst du dir schenken, es gib ListBox1.Count ;)


raiguen - Mi 13.02.08 19:29

Cyberstarmh hat folgendes geschrieben:
-drei Editfelder die zusammengefügt in eine Listbox eingetragen werden
-Vorname , Nachname , Telefonnummer (ergeben einen Eintrag in der Listbox)
verbietet schon mal die 'Such'funktion mittels ListBoxAnzeige.Items.IndexOf(edVorname):!: Warum? Die Funktion ist nur dann erfolgreich, wenn eine EXAKTE Übereinstimmung des 'Such'Textes mit einem ListBox-Eintrag vorhanden ist -> also wird eine 'Teil-Such' (hier nur nach Vorname) schon mal nicht funktionieren ;)
Was tun? DAs hier z.B.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Suchen;
var i: integer;
begin
  for i := 0 to ListBoxAnzeige.Count -1 do 
    if Pos(Uppercase(edVorname.Text), Uppercase(ListBoxAnzeige.Items[i]) > 0 then
    begin
      ListBoxAnzeige.ItemIndex := i;
      break;
   end;
end;


Cyberstarmh - Mi 13.02.08 19:30

Danke an Alle für eure Hilfe.

Das Problem ist nur, dass meine Listboxeinträge sich aus drei Editfeldern zusammensetzen und damit ein einfacher befehl nicht reicht.
Ich benötige eine Suchfunktion bei der es egal ist an welcher Position des String der Suchtext steht.

Fals noch jemand eine Idee hat, bitte posten. Danke


Yogu - Mi 13.02.08 20:07

user profile iconCyberstarmh hat folgendes geschrieben:
Ich benötige eine Suchfunktion bei der es egal ist an welcher Position des String der Suchtext steht.

Die Methode von user profile iconraiguen klappt dannn schon. Mit Pos ermittelst du, an welcher Position ein String in einem anderen steht, und somit auch, ob er überhaupt vorkommt.

Verwende aber lieber AnsiUpperCase statt UpperCase, weil bei der Ansi-Funktion die Umlaute auch kodiert werden.


raiguen - Mi 13.02.08 20:11

user profile iconCyberstarmh hat folgendes geschrieben:
Fals noch jemand eine Idee hat...
Siehe mein Posting ;) möglicherweise ist es bei deiner Antwort noch nicht online gewesen :roll:
[NACHTRAG]Kaum antwortet man, schon ist ein anderer wieder schneller :shock:


user profile iconYogu hat folgendes geschrieben:
..Verwende aber lieber AnsiUpperCase statt UpperCase, weil bei der Ansi-Funktion die Umlaute auch kodiert werden.
jo, ist richtig und auch sinnvoll:!:
[/NACHTRAG]


Blackheart666 - Mi 13.02.08 20:22

user profile iconraiguen hat folgendes geschrieben:
Cyberstarmh hat folgendes geschrieben:
-drei Editfelder die zusammengefügt in eine Listbox eingetragen werden
-Vorname , Nachname , Telefonnummer (ergeben einen Eintrag in der Listbox)
verbietet schon mal die 'Such'funktion mittels ListBoxAnzeige.Items.IndexOf(edVorname):!: Warum? Die Funktion ist nur dann erfolgreich, wenn eine EXAKTE Übereinstimmung des 'Such'Textes mit einem ListBox-Eintrag vorhanden ist -> also wird eine 'Teil-Such' (hier nur nach Vorname) schon mal nicht funktionieren ;)
Was tun? DAs hier z.B.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Suchen;
var i: integer;
begin
  for i := 0 to ListBoxAnzeige.Count -1 do 
    if Pos(Uppercase(edVorname.Text), Uppercase(ListBoxAnzeige.Items[i]) > 0 then
    begin
      ListBoxAnzeige.ItemIndex := i;
      break;
   end;
end;


Das kommt davon wenn man nicht alles liest, Schande über Mich

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
  for i := 0 to ListBox1.Count -1 do
    if Pos(AnsiUppercase(edit1.Text), AnsiUppercase(ListBox1.Items[i])) > 0 then
    begin
      ListBox1.ItemIndex := i;
      break;
   end;
end;


Fehlende Klammer gesetzt :wink:


Cyberstarmh - Do 14.02.08 12:47

Vielen Dank Blackheart666 und natürlich auch an alle anderen.

Die Suchfunktion funktioniert.
Das 'break' benötige ich nicht, da er mir ja auch mehrere Übereinstimmungen anzeigen soll.

Was nur komisch ist, dass er trotz Anweisung den gefundenen Eintrag nicht in der Listbox markiert. Hab gedacht es liegt an der Message, weshalb er dann die Markierung löscht, dem ist aber nicht so.
Das gleiche Problem habe ich bei der Funktion 'Hinzufügen'.
Liegt dort ein generelles Problem vor?
Hab ich da vielleicht etwas angeklick von dem ich nicht weiß was es ist?
[Multiselect=true]? --> kann hier das Problem liegen?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Suchen;
var i: integer;
begin
  for i := 0 to ListBoxanzeige.Count -1 do
    if Pos(AnsiUppercase(edVorname.Text), AnsiUppercase(ListBoxanzeige.Items[i])) > 0 then
    begin
      ListBoxAnzeige.Itemindex:=i;
      showmessage('Übereinstimmung gefunden.'+'  '+ListBoxanzeige.Items[i]);
end;
end;


Xion - Do 14.02.08 14:20

Statt

Delphi-Quelltext
1:
ListBox1.ItemIndex := i;                    

muss es vermutlich

Delphi-Quelltext
1:
ListBox1.Selected[i]:=True;                    

heißen


Cyberstarmh - Do 14.02.08 16:26

Problem vollständig gelöst. danke nochmal an Alle.


Yogu - Do 14.02.08 19:17

Du solltest auf jeden Fall die Listbox aktivieren:


Delphi-Quelltext
1:
ListBox1.SetFocus;                    

Sonst liegt der Fokus womöglich noch auf dem Such-Edit / -Button.

PS: Ich hab die zweite Seite übersehen :mrgreen: