![]() |
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:
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.
TabControl1.TabHeight := 25;
with DataModule1.ABStblName do begin open; while not EOF do begin TabControl1.Tabs.Add(FieldByName('Anzeige').AsString); Next; end; First end; Wie kann ich das ändern?? :wall: Danke im voraus. Mfg Norbert |
Re: TabControl aktualisieren
Wo steht dieser Code?
|
Re: TabControl aktualisieren
Hallo,
der Code ist
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
|
Re: TabControl aktualisieren
Dann führe doch den
Delphi-Quellcode:
-Befehl nach dem Einfügen einer Adresse aus.
TabControl1.Tabs.Add(...);
|
Re: TabControl aktualisieren
Hey,
danke für die schnelle Antwort. Ich werde es morgen in Angriff nehmen. MfG Norbert |
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:
Hat jemand noch eine Idee??
suche := Edit1.Text;
dataModule1.ABStblName.Locate('Anzeige',suche,[lopartialKey]+[loCaseInsensitive]); Mfg Norbert |
Re: TabControl aktualisieren
Du mußt nach dem .Locate den aktiven Tab auf den tab mit dem aktuellen Namen setzen.
|
Re: TabControl aktualisieren
Hey mkinzler,
könntest du mit einem Codeschnippsel mir auf die Sprünge helfen? Mfg Norbert |
Re: TabControl aktualisieren
Delphi-Quellcode:
Getippt und nicht getestet.
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; |
Re: TabControl aktualisieren
Hey
Delphi-Quellcode:
leider kommt nach i< TabControl1.... eine Fehlermeldung:[
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; Fehler] kontakt.pas(382): Operator ist auf diesen Operandentyp nicht anwendbar Was mache ich falsch? Mfg Norbert |
Re: TabControl aktualisieren
Versuchs mal mit
Delphi-Quellcode:
while (not gefunden) and (i < TabControl1.Tabs.Count -1) do
|
Re: TabControl aktualisieren
hey, wir nähern uns dem Ziel.
Der erste Fehler ist behoben, aber ein neuer ist erschienen.
Delphi-Quellcode:
Der Cursor bleibt hinter dem i stehen.
TabControl1.Tabs[i].Text
[Fehler] kontakt.pas(382): Record, Objekt oder Klassentyp erforderlich. Mfg Norbert |
Re: TabControl aktualisieren
Delphi-Quellcode:
TabControl1.Tabs[i];
|
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 |
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 |
Re: TabControl aktualisieren
habe in der Schnelle das
Delphi-Quellcode:
vergessen. Aber das direkte Finden den Strings in der StringListe mittels .IndexOf ist natürlich besser als die Schleife.
inc(i);
|
Re: TabControl aktualisieren
wo kommt die function hin?
Delphi-Quellcode:
norbert
inc(i)
|
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; |
Re: TabControl aktualisieren
Ich habe es nun mal so übernommen:
Delphi-Quellcode:
es wird allerdings vom gesuchten Namen der folgende Tab angezeigt.
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; Norbert |
Re: TabControl aktualisieren
Delphi-Quellcode:
if TabControl1.Tabs[i] = DataModule1.ABStblName.FieldByName('Anzeige').value then gefunden := True else inc(i);
|
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 |
Re: TabControl aktualisieren
Jetzt sollten wir es haben:
Delphi-Quellcode:
hast du es mal mit .IndexOf versucht?
while (not gefunden) and (i < TabControl1.Tabs.Count) do
|
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