[delphi] Class References

Pagina: 1
Acties:

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Topicstarter
Ik heb bezig met een wizard die uiteindelijk een variabel samengesteld rapport moet laten zien. Nu heb ik een venster met daarop een frame, voor elke stap in de wizard een nieuw frame en deze wissel ik bij het klikken op volgende/vorige.

De wizard bestaat niet uit een oplopende reeks, een selectie kan er voor zorgen dat een ander frame getoond wordt. De frames geeft ik door aan een procedure ShowSheet als class reference:

Delphi:
1
2
3
4
type
  TWizardSheetRef = class of TWizardSheet;
  TWizardSheet = class(TFrame)
  end;


De andere sheets zijn van TWizardSheet overgeërftd. Omdat er meerdere paden gevolgd kunnen worden wil het vorige sheet onthouden, niet de instantie maar de class reference.

Mijn vraag is of er een functie is waarbij ik van een object instantie een class reference kan krijgen. TComponent.ClassType werkt niet omdat niet een reference is. In de code kun je ook niet:

Delphi:
1
2
3
4
5
var
  tmpSheet: TWizardSheetRef;
begin
  tmpSheetRef := class of sheetSelectCustomer.ClassType;
end;


of iets in die richting. Kan iemand me helpen?

www.fendt.com | Nikon D7100 | PS5


  • Robbemans
  • Registratie: November 2003
  • Laatst online: 17-07-2025
Wat is de reden dat je niet de instaties onthoudt in een TObjectList of TStack (zie unit Contnrs) ?

Op die manier kun je gewoon door de instaties heenlopen en eventueel properties bijhouden op de frames vanuit de wizard.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

code:
1
2
3
4
5
var
  tmpSheet: TWizardSheetRef;
begin
  tmpSheetRef := TWizardSheetRef(sheetSelectCustomer.ClassType);
end;


Maar weet je wel zeker dat je niet liever de vorige instantie wilt hebben? Hoe onthoudt je anders de vorige al reeds ingevulde gegevens?

We adore chaos because we like to restore order - M.C. Escher


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Topicstarter
Robbemans schreef op 30 september 2004 @ 13:16:
Wat is de reden dat je niet de instaties onthoudt in een TObjectList of TStack (zie unit Contnrs) ?
Goeie vraag. De ingevoerde waarden onthoud ik nu in het venster waar de frames op getoond worden. De waarden gaan nu inderdaad verloren, dat zou inderdaad beter kunnen met een ObjectList.

[ Voor 13% gewijzigd door FendtVario op 30-09-2004 14:16 ]

www.fendt.com | Nikon D7100 | PS5


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:06

Creepy

Tactical Espionage Splatterer

Wat ik me altijd afvraag als ik de zoveelste TWizardnogwat class voorbij zie komen is: Waarom voeldoet een TPageControl niet? Die kan ook meerdere pages tonen. Als je op het form er knoppen bijzet kan je daar ook mee van tabs wisselen. En de tabs kan je verbergen (ttabsheet.showtab op false zetten, kan ook in de object inspector, en de style van de TPageCOntrol op TSFlatButtons)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Robbemans
  • Registratie: November 2003
  • Laatst online: 17-07-2025
@Creepy:

Voordeel van frames is dat je het ECHT afzonderd van de rest. Dit kan met een pagecontrol niet. Hij kan natuurlijk WEL de frames op de tabs van de pagecontrol zetten.


@FendtVario:
Je wil frames OF je wil geen frames. Het smaakt mij een beetje vreemd om frames te definieren om alles afzonderlijk te houden en vervolgens de properties vast te houden op je main form...

Ik zou in dat geval de frames geinstantieerd laten en die hun eigen properties laten houden.
Pagina: 1