Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TabControl aktualisieren (https://www.delphipraxis.net/72351-tabcontrol-aktualisieren.html)

norbert3 28. Jun 2006 22:06


TabControl aktualisieren
 
Hallo Leute,

ich habe wiedermal ein Problem. Ich habe in einem Formular ein TabControl eingebaut.
Die Tab´s werden automatisch mit dem Familiennamen gefüllt.
Delphi-Quellcode:
TabControl1.TabHeight := 25;
    with DataModule1.ABStblName do
    begin
    open;
    while not EOF do
      begin
      TabControl1.Tabs.Add(FieldByName('Anzeige').AsString);
      Next;
      end;
    First
    end;
Das funktioniert einwandfrei. Jetzt zu meinem Problem: Wenn ich eine neue Adresse mit dazu gehörigen Familiennamen anlege, wird die Tabseite zwar angezeigt, aber der Tab selber erst wenn ich die Anwendung neu starte.
Wie kann ich das ändern?? :wall:

Danke im voraus. Mfg Norbert

mkinzler 28. Jun 2006 22:09

Re: TabControl aktualisieren
 
Wo steht dieser Code?

norbert3 28. Jun 2006 22:11

Re: TabControl aktualisieren
 
Hallo,

der Code ist
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);

mkinzler 28. Jun 2006 22:13

Re: TabControl aktualisieren
 
Dann führe doch den
Delphi-Quellcode:
TabControl1.Tabs.Add(...);
-Befehl nach dem Einfügen einer Adresse aus.

norbert3 28. Jun 2006 22:35

Re: TabControl aktualisieren
 
Hey,

danke für die schnelle Antwort. Ich werde es morgen in Angriff nehmen.

MfG Norbert

norbert3 29. Jun 2006 19:37

Re: TabControl aktualisieren
 
Hallo,
danke nochmals für den Tip. Funktioniert wunderbar. Einen Schönheitsfehler gibt es noch.

Wenn ich über mein Suchfeld im geöffneten Formular einen Namen eingebe, springt leider der Tab nicht mit. Die richtigen Daten des ausgewählten Satzes werden jedoch angezeigt.

Suchfunktion:
Delphi-Quellcode:
suche := Edit1.Text;
    dataModule1.ABStblName.Locate('Anzeige',suche,[lopartialKey]+[loCaseInsensitive]);
Hat jemand noch eine Idee??

Mfg Norbert

mkinzler 29. Jun 2006 19:43

Re: TabControl aktualisieren
 
Du mußt nach dem .Locate den aktiven Tab auf den tab mit dem aktuellen Namen setzen.

norbert3 29. Jun 2006 20:05

Re: TabControl aktualisieren
 
Hey mkinzler,
könntest du mit einem Codeschnippsel mir auf die Sprünge helfen?
Mfg Norbert

mkinzler 29. Jun 2006 20:16

Re: TabControl aktualisieren
 
Delphi-Quellcode:
i := 0;
gefunden := false;
while not gefunden and i < TabControl1.Tabs.Count -1 do
    if TabControl1.Tabs[i].Text = DataModule1.ABStblName.FiledByName('Anzeige').value then gefunden := True;
If gefunden then TabControl1.TabIndex := i;
Getippt und nicht getestet.

norbert3 29. Jun 2006 20:40

Re: TabControl aktualisieren
 
Hey
Delphi-Quellcode:
  var suche: String;
  gefunden : Boolean;
          i: Integer;

begin
    suche := Edit1.Text;
    dataModule1.ABStblName.Locate('Anzeige',suche,[lopartialKey]+[loCaseInsensitive]);
    i := 0;
    gefunden := false;
      while not gefunden and i < TabControl1.Tabs.Count -1 do
      if TabControl1.Tabs[i].Text = DataModule1.ABStblName.FieldByName('Anzeige').value then gefunden := True;
          If gefunden then TabControl1.TabIndex := i;
     end;
leider kommt nach i< TabControl1.... eine Fehlermeldung:[

Fehler] kontakt.pas(382): Operator ist auf diesen Operandentyp nicht anwendbar

Was mache ich falsch?
Mfg Norbert

mkinzler 29. Jun 2006 20:45

Re: TabControl aktualisieren
 
Versuchs mal mit
Delphi-Quellcode:
while (not gefunden) and (i < TabControl1.Tabs.Count -1) do

norbert3 29. Jun 2006 20:59

Re: TabControl aktualisieren
 
hey, wir nähern uns dem Ziel.

Der erste Fehler ist behoben, aber ein neuer ist erschienen.
Delphi-Quellcode:
TabControl1.Tabs[i].Text
Der Cursor bleibt hinter dem i stehen.
[Fehler] kontakt.pas(382): Record, Objekt oder Klassentyp erforderlich.

Mfg Norbert

mkinzler 29. Jun 2006 21:03

Re: TabControl aktualisieren
 
Delphi-Quellcode:
TabControl1.Tabs[i];

Hawkeye219 29. Jun 2006 21:17

Re: TabControl aktualisieren
 
Hallo,

wird das nicht eine Endlosschleife, falls nicht gerade das erste Element das richtig ist? Im ELSE-Zweig sollte die Variable i erhöht werden.

Vielleicht geht es aber auch einfacher: Tabs ist doch eine Stringliste, und die hat eine Methode IndexOf...

Gruß Hawkeye

norbert3 29. Jun 2006 21:35

Re: TabControl aktualisieren
 
Hey,
mit TabControl1[i] hab ich es probiert und muss Hawkeye219 recht geben. Der Rechner stürtzt beim Ausführen ab.

norbert

mkinzler 29. Jun 2006 21:42

Re: TabControl aktualisieren
 
habe in der Schnelle das
Delphi-Quellcode:
inc(i);
vergessen. Aber das direkte Finden den Strings in der StringListe mittels .IndexOf ist natürlich besser als die Schleife.

norbert3 29. Jun 2006 21:53

Re: TabControl aktualisieren
 
wo kommt die function hin?
Delphi-Quellcode:
inc(i)
norbert

mkinzler 29. Jun 2006 21:57

Re: TabControl aktualisieren
 
Delphi-Quellcode:
i := 0;
gefunden := false;
while (not gefunden) and (i < TabControl1.Tabs.Count -1) do
begin
    if TabControl1.Tabs[i].Text = DataModule1.ABStblName.FiledByName('Anzeige').value then gefunden := True;
    inc(i);
end;
If gefunden then TabControl1.TabIndex := i;

norbert3 29. Jun 2006 22:13

Re: TabControl aktualisieren
 
Ich habe es nun mal so übernommen:
Delphi-Quellcode:
begin
     suche := Edit1.Text;
     dataModule1.ABStblName.Locate('Anzeige',suche,[lopartialKey]+[loCaseInsensitive]);
     i := 0;
     gefunden := false;
   while (not gefunden) and (i < TabControl1.Tabs.Count -1) do
    begin
       if TabControl1.Tabs[i] = DataModule1.ABStblName.FieldByName('Anzeige').value then gefunden := True;
       inc(i);
    end;
           If gefunden then TabControl1.TabIndex := i;
      end;
es wird allerdings vom gesuchten Namen der folgende Tab angezeigt.

Norbert

mkinzler 30. Jun 2006 05:30

Re: TabControl aktualisieren
 
Delphi-Quellcode:
if TabControl1.Tabs[i] = DataModule1.ABStblName.FieldByName('Anzeige').value then gefunden := True else inc(i);

norbert3 30. Jun 2006 15:32

Re: TabControl aktualisieren
 
Hey
allso, erstmal möchte ich mich für die Ausdauer und Bemühungen bedanken. Es ist schon toll. :mrgreen:

Ich habe so eben den Code aktualisiert und jetzt ist das Ergebnis anders herum. Das heißt, es wird der letzte Tab nicht angesprochen.

Hast du eventuell dafür noch einen Vorschlag?

Norbert

mkinzler 30. Jun 2006 15:39

Re: TabControl aktualisieren
 
Jetzt sollten wir es haben:
Delphi-Quellcode:
while (not gefunden) and (i < TabControl1.Tabs.Count) do
hast du es mal mit .IndexOf versucht?

norbert3 30. Jun 2006 19:38

Re: TabControl aktualisieren
 
Hey,
jetzt funktioniert alles einwandfrei!!! :drunken:

Die .indexOfhabe ich noch nicht getestet, werde es aber später mal testen.

Danke nochmal
Norbert


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz