Results 1 to 5 of 5

Thread: Meerdere instanties van 1 frame, op 1 form designen.

  1. #1
    TNldPuinhoop pelleke's Avatar
    Join Date
    Apr 2002
    Location
    Den Haag! ! ! ! ! ! IDE: BDS 2007
    Posts
    409

    Meerdere instanties van 1 frame, op 1 form designen.

    Hallo!

    Ik ben een applicatie aan het maken waarvoor ik nogal vaak een hele serie componenten een behoorlijk aantal keer op precies dezelfde wijze op een form moet hebben. Bovendien hoort daar dan een redelijke hoeveelheid code bij. Het komt er eigenlijk op neer dat het een soort universele database-interface is voor verschillende tabellen. Ik heb zo'n 10 tabsheets die er allemaal (los van de invoervelden, die worden at runtime aangemaakt) ongeveer hetzelfde uitzien.

    Ik dacht dat ik daarvoor met frames moest gaan werken, dus ik heb een super ingewikkeld frame gedesigned, en op een form gezet. Werkt voortreffelijk.

    Nu probeerde ik een onschuldige tweede instantie van deze frame erop te zetten, en PATS! Delphi gaat tijdens de compile zeuren over dat de componenten op frame1 dezelfde namen hebben als op frame2. En ik maar denken dat TFrame de owner was van zijn componenten.

    Nu zit er dermate veel werk in het bouwen van die frames, dat ik geen zin heb om alles nog eens te doen.

    Is er een truukje dat je TFrames hun nested componenten ownen, zodat Delphi niet zal zeuren over dubbele componentnamen? Of moet ik nu het hele zootje dat nu op de frame staat naar mijn formuliertje copy-en en het idee 'frames' voorgoed achter me laten? Of met de hand alle namen van de componenten op elk frame veranderen in een unieke waarde? (Dat zal niet gaan, want die namen komen ook voor in de code in de unit van de frame.)
    Aut viam inveniam aut faciam!

    Google might answer your questions faster than me...

  2. #2
    Hoe zet je dan dat frame op je form? Ik gebruik ook frames maar ben die error nog nooit tegen gekomen
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  3. #3
    TNldPuinhoop pelleke's Avatar
    Join Date
    Apr 2002
    Location
    Den Haag! ! ! ! ! ! IDE: BDS 2007
    Posts
    409
    1. Maak een frame en gooi er wat dingen op.
    2. Zet op een form een TPageControl, en maak 2 tabsheets aan.
    3. Zet op beide tabsheets een instance van het frame at designtime, en druk op F9.

    Ik begin me nu iets te realiseren: De error komt van een TClientDataSet. Op mijn frame staat een TClientDataSet, misschien mag dat niet?
    Aut viam inveniam aut faciam!

    Google might answer your questions faster than me...

  4. #4
    TNldPuinhoop pelleke's Avatar
    Join Date
    Apr 2002
    Location
    Den Haag! ! ! ! ! ! IDE: BDS 2007
    Posts
    409
    Probleem opgelost. (Ik ben nu bezig met de uitleg.)

    // EDIT
    Uitleg:
    Ik keek iets te snel. Het verhaaltje vertelt zich zo het makkelijkst:

    1. Ontwerp een frame, met daarop een lege TClientDataSet. (Die noemen we even CDS)
    2. Knikker het frame meerdere malen op een form.
    3. Maak op het form op beide ClientDataSets een veld ID aan. Deze heet automatisch CDSID. (CDS.Fields[n].Name).

    Dit geeft de error "A component called CDSID already exists". Klopt, de velden zijn aangemaakt op het formulier en moeten dus een unieke naam hebben. Wel vreemd dat de IDE het gewoon prima vindt, maar ik kan me voorstellen dat deze rare soort constructies er bij het testen bij in zijn geschoten.

    Excuses voor de te snelle post, en een fijne avond allemaal!
    Aut viam inveniam aut faciam!

    Google might answer your questions faster than me...

  5. #5
    Wel vreemd dat de IDE het gewoon prima vindt,
    Als je die velden niet persistent toevoegt worden ze @runtime pas na het openen aangemaakt en is het dus logisch dat de IDE het pikt. (Dus als je ze alleen in de FieldDefs aanmaakt, die zie je namelijk ook niet in je pas-file bij de objecten...)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •