AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TTabControl - Tabs auf Stringlist umleiten?

Ein Thema von idefix2 · begonnen am 22. Okt 2016 · letzter Beitrag vom 24. Okt 2016
Antwort Antwort
Seite 1 von 2  1 2      
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

TTabControl - Tabs auf Stringlist umleiten?

  Alt 22. Okt 2016, 19:49
Hallo, noch eine Frage zu TTabControl - die betrifft wahrscheinlich analog auch andere Komponenten.

Ich habe derzeit in meinem Programm eine Stringliste "Sheets".
Zu jedem String der Stringliste gibt es den gleichen String in TabControl1.Tabs, und in der Stringliste zusätzich ein Objekt, das die Daten enthält, die im entsprechenden Tab angezeigt werden.
Die Zweigleisigkeit ist mühsam, wenn in Sheets Strings geändert oder gelöscht werden oder neu dazukommen. Kann ich einfach mit tabcontrol1.tabs:=sheets dem tabcontrol die Stringliste direkt unterjubeln, oder könnte das in der Folge zu Problemen führen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: TTabControl - Tabs auf Stringlist umleiten?

  Alt 22. Okt 2016, 19:54
Kann ich einfach mit tabcontrol1.tabs:=sheets dem tabcontrol die Stringliste direkt unterjubeln, oder könnte das in der Folge zu Problemen führen?
Es werden da nur die Strings durch TStrings kopiert ... es wird nicht das ganze TStrings-Objekt übernommen, sondern nur der Text-Inhalt.

Ob bei TTabControl.Items die Objects überhaupt implementiert sind, weiß ich nicht.
z.B. Bei TComboBox sind sie es, denn da wird Objects in die Windows-COMBOXOX umgeleitet, aber bei TMemo nicht, da es dort keine Zeilen-Objekte gibt.


Soooo, du gibst deiner TStringList ein OnChanged-Event und da drin wird GUI/TTabControl aktualisiert.
Strings werden auch nur in deinem Daten-Objekt geändert und niemals in der GUI.
$2B or not $2B

Geändert von himitsu (22. Okt 2016 um 20:00 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: TTabControl - Tabs auf Stringlist umleiten?

  Alt 22. Okt 2016, 20:23
Die Property tabs ist vom Typ TStrings und unterstützt selbst keine Objekte. Aber wenn ich dort den Zeiger auf eine Stringlist zeigen lasse, dann würde die Stringlist das ja können.

Die Frage ist, ob etwas dagegen spricht, die property "Tabs" direkt auf die Stringliste zeigen zu lassen, in der die Datenmanipulation erfolgt. Was ist der Vorteil eines separaten "strings"-Objekts, in dem alle Änderungen der Stringliste 1:1 nachgebildet werden, bzw. welche Probleme könnten andererseits auftreten, wenn man den TStrings Zeiger des tabcontrols direkt auf die entsprechende Stringliste zeigen lässt? Die Bearbeitung der Daten erfolgt dann ja weiterhin in meiner "Sheets" Stringliste.

edit:
Mir dämmert gerade, dass ich ein ähnliches Problem an anderer Stelle schon hatte. Die Zuweisung auf die Property Tabs dürfte wahrscheinlich auch bei dieser Komponente über einen Setter erfolgen, der eben nicht den Zeiger umsetzt, sondern statt dessen die Strings kopiert. Da wird mir also nichts übrig bleiben als über das onchanged-Event zu gehen, wie du es vorgeschlagen hast.

Geändert von idefix2 (22. Okt 2016 um 20:43 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: TTabControl - Tabs auf Stringlist umleiten?

  Alt 22. Okt 2016, 21:02
Ist es eigentlich möglich, die Onchange-routine als anonyme Methode zuzuweisen? Wenn ja, wie schaut das aus? "Procedure(sender: Tobject) of object" schluckt die Syntaxprüfung bei der Zuweisung nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: TTabControl - Tabs auf Stringlist umleiten?

  Alt 23. Okt 2016, 13:29
Nein.

Variablen vom Typ "procedure of object" nehmen immer nur Methoden und Klassenmethoden an,
Variablen vom Typ "procedure" nehmen nur Prozeduren und statische Klassenmethoden an
und Variablen vom Typ "reference to procedure" nehmen Alles an.

Eventmethoden der VCL/RTL/FMX sind fast immer nur "procedure of object".
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TTabControl - Tabs auf Stringlist umleiten?

  Alt 24. Okt 2016, 06:44
Probier mal https://github.com/norgepaul/TChromeTabs

Das ist quasi nur die Tab-Leiste, die Du mit dem pro Tab enthaltenen Data-Feld an Deine Liste binden kannst. Je nachdem, was für ein Tab gewählt wird, blendest Du drunter den passenden Inhalt ein. Das können z.B. auch verschiedene Frames sein.
Sven Harazim
--
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#7

AW: TTabControl - Tabs auf Stringlist umleiten?

  Alt 24. Okt 2016, 11:14
Ich sehe das etwas anders.
Warum direkt eine neue Komponente verwenden, die zudem (wahrscheinlich) auch noch anders aussieht?

Zitat:
Die Zweigleisigkeit ist mühsam, wenn in Sheets Strings geändert oder gelöscht werden oder neu dazukommen
So oft wird sich da wahrscheinlich nichts ändern.
Die Zeit, die man für das Ändern benötigt, ist wahrscheinlich geringer, als die Zeit die man benötigt jetzt alles in eine neue Komponente zu basteln die man nicht kennt.

Wenn du so etwas in der Art machst, hast du schon weniger Mühe:

Delphi-Quellcode:
// ... FormCreate
begin
 // gehen wir davon aus, dass sheets schon erstellt wurde
 // .....
 for i := 0 to sheets.count - 1 do
  begin
   sheets.tabs[i] := sheets.Strings[i];
  end;
end;
Wenn du etwas in der StringListe änderst, ändern sich zeitgleich die Titel der Tabs. Eine Änderung weniger zu erledigen beim Ändern der StringListe.

Geändert von Jim Carrey (24. Okt 2016 um 11:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: TTabControl - Tabs auf Stringlist umleiten?

  Alt 24. Okt 2016, 11:19
Wir benötigen endlich ein VirtualTabControl!
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: TTabControl - Tabs auf Stringlist umleiten?

  Alt 24. Okt 2016, 12:23
Nimm den VirtuialTreeView, mach eine ganz große Spalte und eine Zeile rein, über die ganze Anzeige und da dann virtuell den gewünschten Inhalt rein.
$2B or not $2B
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#10

AW: TTabControl - Tabs auf Stringlist umleiten?

  Alt 24. Okt 2016, 13:53
Nimm den VirtuialTreeView, mach eine ganz große Spalte und eine Zeile rein, über die ganze Anzeige und da dann virtuell den gewünschten Inhalt rein.
Ich benutze auch immer Benzin zum Kochen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz