Änderugen am TNotebook in Version 0.9.31

Rund um die LCL und andere Komponenten
Antworten
Reinhard
Beiträge: 46
Registriert: Fr 26. Sep 2008, 16:56

Änderugen am TNotebook in Version 0.9.31

Beitrag von Reinhard »

Seit Version 0.9.31 sind Änderungen am TNotebook vorgenommen worden, bzw der "alte" TNotebook wurde irgendwie ersetzt (durch TPageControl ?)

Jedenfalls bekomme ich immer die Meldung das Page0.Caption nicht gefunden werden kann.

Diese ist auch nicht mehr im neuen "TNobeook" vorhanden, sondern nur mehr im "TPageControl".

Wie kann ich jetzt ohne Neuschreiben des gesammten Programmes welches auf "TNoebook" aufbaut (24 Seiten) auf TPageControl umsteigen ?

Bzw, gibt es den "alten" TNotebook noch irgendwo ? gefunden hätte ich da nichts disbezüglich.

Ich habe versucht im Source (lfm Datei) den TNotebook auf ein "TPageControl" zu ändern, sowie auch in der Unit selber, bekomme dann beim laden in die IDE keinen Fehler mehr, aber beim starten des Prog.hagelt es Exceptions das er "Page0.Caption" nicht finden kann.

Auch wird im Objektinspector weiterhin "TNotebook" angezeigt.

Man muss das doch umstellen können irgendwie, kann ja nicht sein das man das ganze Programm einfach neu schreiben muss.

Danke

Benutzeravatar
theo
Beiträge: 10907
Registriert: Mo 11. Sep 2006, 19:01

Re: Änderugen am TNotebook in Version 0.9.31

Beitrag von theo »

Reinhard hat geschrieben:Man muss das doch umstellen können irgendwie, kann ja nicht sein das man das ganze Programm einfach neu schreiben muss.
Wieso "das ganze Programm einfach neu schreiben"? Wo ist denn das Problem mit dem ersetzen von TNoteBook -> TPageControl?
Wie kommst du auf die seltsame Idee, dass du alles neu schreiben musst?

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Änderugen am TNotebook in Version 0.9.31

Beitrag von DiBo33 »

Wie kommst du auf die seltsame Idee, dass du alles neu schreiben musst?
Weil TPageControl nicht die gleichen Eigenschaften/Methoden hat welche TNotebook hatte, somit muss das ganze Programm umgeschrieben werden.

Darüber habe ich mich auch schon geärgert.

Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Re: Änderugen am TNotebook in Version 0.9.31

Beitrag von Eb »

Ich finde den Link jetzt gerade nicht mehr, aber ich habe gelesen, dass TNotebook in 09.30 noch da sein soll, in 09.31 dann fehlen wird,
in einer späteren Version - dann komplett neu geschrieben - wieder vorhanden sein wird, allerdings dann ohne die Tabs.
Also wenn du dein Programm nicht umschreiben willst müsstest du auf die 09.30 zurückgehen und dann warten, bis dass TNotebook wieder da sein wird.
Bei mir hat sich das umschreiben auf TPageControl allerdings gelohnt, da TNotebook mehr schlecht als recht funktioniert hat ...

Reinhard
Beiträge: 46
Registriert: Fr 26. Sep 2008, 16:56

Re: Änderugen am TNotebook in Version 0.9.31

Beitrag von Reinhard »

Naja ich könnte ja bei 0.9.29 bleiben , wenn da nicht ein QT Bug mit dem ListView OnSelectItem wäre, welcher erst noch gefixt werden muss, und dann eben nur mehr in der 0.9.31er drinnen ist.

Das andere Problem mit TNotebook ist, das man zwar die Basisklasse von TNotbook auf TPageControl mittels der IDE umstellen kann, jedoch stürzt die IDE dann ab weil die Seiten innerhalb eines TNotebooks als "TPage" deklarierst sind, und beim Konvertieren nach TPageControl drüfen nur noch "TTabControl" drinen sein und keine TPages.

Also ist das Konvertieren auch für die Katz - leider :(

Ich habe jedoch einen anderen - zwar nicht so eleganten - Weg gefunden ohne alles was auf TNotebook beruht umzuschreiben.

Man starte Virtuialbox installiert sich dort ein Lazarus seiner Wahl (eben halt bis 0.9.30) und am Host/Wirt Rechner lässt man dann 0.9.31 laufen.

Man ladet das Programm mit der 0.9.31er Version und klickt sich durch die Fehlermeldungen die während des Ladens des Projektes erscheinen durch, bis das Projekt vollständig geladen wurde (also keine Fehlermeldung mehr erscheint)

Dann das gesamte "TNotebook" löschen, ein neues TPageControl in der selben Größe platzieren und einfach "Notebook1" als Name verwenden (sofern der Name des alten Notebooks so war).

Dann eine neue Seite im "TPageControl" anlegen.

Danach von dem alten Lazarus in der Virtualbox (also Version bis 0.9.30) einfach die jeweiligen Elemente die innerhalb der "TPage" sind mittels rechter Maus Taste "Kopieren" auf die neue Seite in TPageControl "einfügen".

Das ganze dann halt solange wiederholen bis man alles "kopiert" hat.

Jedoch muss man leider bei den Controls die man eingefügt hat noch die "Events" händisch wieder aktivieren, diese werden nicht kopiert.

EVt. kann man das ganze auch ohne Virtualbox machen, in dem man einfach 2 verschiedene Versionen von Lazarus startet, dürfte aber ein wenig unübersichtlich werden dann mit den vielen Fenstern denke ich.

ist zwar nicht die perfekte Lösung jedoch besser als alles neu (um) schreiben.

Abwarten bis eine neue Lazarus Version kommt die dann wieder mit den "alten" TNotebook wieder umgehen kann wird nichts brbingen, da in der 0.9.31 ein TNotebook ja wieder drinnen ist, jedoch ohne die Tabs und die Eigenschaften heißen komplett anders.

Benutzeravatar
theo
Beiträge: 10907
Registriert: Mo 11. Sep 2006, 19:01

Re: Änderugen am TNotebook in Version 0.9.31

Beitrag von theo »

Ich bearbeite dann immer den Source Code des Formulars.
Kontextmenu auf dem Formular -> Quelltext (.lfm) anzeigen.
Dann kannst du einfach rumkopieren oder ersetzen. Es muss nat. in der Unit eine Entsprechung geben.

Antworten