Autor Beitrag
Cyberstarmh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: Mi 13.02.08 11:10 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: 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.

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mi 13.02.08 11:31 
ListBox.Items.IndexOf wäre auch noch eine Möglichkeit.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Cyberstarmh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: Mi 13.02.08 12:13 
Die 'strings[i]' gibt er mir als undefinierter Bezeichner aus.
Woran liegt das?

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Mi 13.02.08 12:16 
items[i] sollte das wohl heißen.
Cyberstarmh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mi 13.02.08 12:59 
ausblenden 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;

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Cyberstarmh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: Mi 13.02.08 13:18 
Passiert gar nichts.
Xong
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: Mi 13.02.08 13:32 
user profile iconCyberstarmh hat folgendes geschrieben:
Passiert gar nichts.

... ist keine Fehlerbeschreibung.
Cyberstarmh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: 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
ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: 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:

ausblenden 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 ;)

_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: 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.
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: 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.


Zuletzt bearbeitet von Yogu am Mi 13.02.08 20:21, insgesamt 1-mal bearbeitet
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: 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.
ausblenden 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
ausblenden 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:

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Cyberstarmh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: 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?

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 14.02.08 14:20 
Statt
ausblenden Delphi-Quelltext
1:
ListBox1.ItemIndex := i;					

muss es vermutlich
ausblenden Delphi-Quelltext
1:
ListBox1.Selected[i]:=True;					

heißen

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)