[Delphi] één component (stringgrid) op 2 forms

Pagina: 1
Acties:

  • Rodyman
  • Registratie: November 2001
  • Laatst online: 08-06-2024
Ik zal de situatie even uitleggen:

Ik heb een delphi applicatie met een form met een vaste grootte (niet fullscreen) waarop een stringgrid staat met veel waardes. Nu wil ik voor de overzichtelijkheid een mogelijkheid bieden om de gegevens toch op full screen te laten zien. Het vergroten van het huidige form is hierbij geen optie.

Daarom heb ik in de toolbar een knop gemaakt waarmee een nieuw form geopent wordt dat wel vergroot kan worden, waar ik dan alleen die stringgrid met de bijbehorende waardes in wil laten zetten. Is er een mogelijkheid om de twee stringgrids in 1 klap over te zetten?

ik heb
code:
1
form1.stringgrid := form2.stringgrid

geprobeerd, maar ik was al bang dat het niet zo makkelijk ging. ;)
De optie om de hele stringgrid opnieuw te vullen is wel mogelijk, maar het lijkt me makkelijker kunnen, en programmeurs zijn nou eenmaal lui :)

Het moet toch mogelijk zijn een soort pointer te maken naar het ingevulde grid lijkt me? Iemand een idee misschien?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Probeer eens assign:
code:
1
Form1.StringGrid.Assign(Form2.StringGrid);

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


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 06-05 19:34

Tomatoman

Fulltime prutser

Rodyman schreef op vrijdag 17 juni 2005 @ 19:14:
[...]

ik heb
code:
1
form1.stringgrid := form2.stringgrid

geprobeerd, maar ik was al bang dat het niet zo makkelijk ging. ;)
Begrijp je ook waarom dit niet het gewenste resultaat oplevert? Je kopieert hier niet de inhoud van het stringgrid, maar verandert op form1 de verwijzing naar het stringgrid in een verwijzing naar het strnggrid op form2. Dat levert alleen geheugenlekken en access violations op.
Het moet toch mogelijk zijn een soort pointer te maken naar het ingevulde grid lijkt me? Iemand een idee misschien?
Dit pointer heb je al, hij heet form1.stringgrid of form2.stringgrid. Nu de vraag wat je met die pointer zou willen doen.

Misschien moet je eens in de helpfiles lezen wat de Parent property doet.

Een goede grap mag vrienden kosten.


Verwijderd

TStringGrid heeft een field FData (en FCols en FRows). Probleem voor je is, dat deze private zijn. Daar kom je dus niet bij.

Anders had dit wellicht gewerkt:
Form2.StringGrid1.FData := Form1.StringGrid1.FData; (maar dat gaat dus niet...)

De Parent hint hierboven is een mooie hint ;), alleen ben je wel je stringgrid tijdelijk kwijt op je eerste form (maar je laat het tweede form toch fullscreen zien, het eerste form zien ze dan niet... Misschien ShowModal gebruiken).