"The shell stopped unexpectedly and Explorer.exe was restarted."
Gelijke grote? Moeten ze op elkaar lijken (dus qua componenten die OP het panel staan? Of bedoel je dat ze samen 1 panel worden? Dat eerste 2 is goed te doen..dat laatste waarschijnlijk ook wel als je het tweede panel in code aanmaakt en met pointers gaat rotzooien (humz.., panel2:=panel1 geeft dat geen error?)
Je kan 1 object kopieren door gebruik te maken van assign.
1
| panel2.assign(panel1) |
Alle properties van panel1 worden gekopieerd naar panel2. Het zijn nog wel steeds 2 verschillende object..
"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
Panel1 := Panel2; werkt niet.Op woensdag 31 oktober 2001 22:12 schreef Creepy het volgende:
Hoe bedoel je gelijk?
Gelijke grote? Moeten ze op elkaar lijken (dus qua componenten die OP het panel staan? Of bedoel je dat ze samen 1 panel worden? Dat eerste 2 is goed te doen..dat laatste waarschijnlijk ook wel als je het tweede panel in code aanmaakt en met pointers gaat rotzooien (humz.., panel2:=panel1 geeft dat geen error?)
Je kan 1 object kopieren door gebruik te maken van assign.
code:
1 panel2.assign(panel1)
Alle properties van panel1 worden gekopieerd naar panel2. Het zijn nog wel steeds 2 verschillende object..
Panel2.Assign(Panel1); werkt ook niet: hij kan niet een TPanel aan een TPanel assigen-en.
"The shell stopped unexpectedly and Explorer.exe was restarted."
Verwijderd
Ik heb geen flauw idee wat je aan het doen bent, maar het copieren van een panel met alle WinControls die dat panel als parent hebben doe je niet met 1 commando.Op woensdag 31 oktober 2001 22:15 schreef jelmervos het volgende:
Panel1 := Panel2; werkt niet.
Panel2.Assign(Panel1); werkt ook niet: hij kan niet een TPanel aan een TPanel assigen-en.
Components van Panel1 stuk voor stuk langslopen en copieren (en parent op Panel2 zetten), en de Components van die Components, etc..
Misschien iets met pointers ofzo?
"The shell stopped unexpectedly and Explorer.exe was restarted."
Verwijderd
"The shell stopped unexpectedly and Explorer.exe was restarted."
Verwijderd
zoals :
Panel1.width := Panel2.width;
Panel1.left := Panel2.left;
Panel1.top := Panel2.top;
Panel1.caption := Panel2.caption;
Of is dit neit wat je zoekt ??
Of dit mogelijk is weet ik niet, probeer het nu.
Misschien weet iemand een betere oplossing?
"The shell stopped unexpectedly and Explorer.exe was restarted."
Verwijderd
Nog geen ervaring mee, maar als je i.p.v. een Panel nou 's een Frame gebruikt?Op donderdag 01 november 2001 20:28 schreef jelmervos het volgende:
Misschien weet iemand een betere oplossing?
Mar je wilt dus vanuit een DLL een panel aanmaken en tonen op het form van de aanroepende applicatie?
Als het allebei Delphi is (zowel de DLL als de aanroepende applicatie) kan je complete objecten als parameters en return values meegeven (humz.. DENK IK
Probeer eerst eens in code een panel aan te maken en toe te voegen aan je form (dus ZONDER dll). Probeer dan eens in een DLL of je een functie kan maken dat de handle van het form als parameter heeft, en dan dus dat panel daar op toont (deze oplossing werkt alleen als je applicatie EN dll allebei in Delphi zijn geschreven, anders moet je waarschijnlijk lekker gaan rotzooien met window handles en api call's)
ow ja.. community.borland.com -> search als je niet weet hoe je panels e.d. in code aan moet maken..
"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
Verwijderd
zet 2 panels op een form, gooi in panel1 een label en een button en koppel de code hieronder aan een button. je moet het lijstje onderaan aanvullen met de comps die jij wilt gebruiken.
procedure TForm1.Button1Click(Sender: TObject);
var
temp : tcomponent;
I: Integer;
begin
for I := ComponentCount - 1 downto 0 do
begin
Temp := Components[I];
if temp.GetParentComponent = panel1 then
begin
clipBoard.setComponent(temp);
clipBoard.getComponent(form1, panel2);
end;
end;
end;
initialization
RegisterClasses([TButton]);
RegisterClasses([TLabel]);
end.
Opensource delphi componenten (http://www.delphi-jedi.org)
"The shell stopped unexpectedly and Explorer.exe was restarted."
Ik begrijp helaas nog steeds niet precies wat je bedoelt. Maar ik kan je wel vertellen dat het doorsturen van een in een DLL gemaakt panel naar een TForm in de .exe niet zomaar gaat, omdat pointers niet overdraagbaar zijn van DLL naar exe.Op vrijdag 02 november 2001 00:18 schreef jelmervos het volgende:
Oke, veel reply's, bedankt! Maar wat is nu de beste oplossing om een Panel (Frame?) uit een DLL naar een applicatie te gooien? Dus dat de DLL een Panel/Frame opmaakt en de applicatie hem toont.
Als ik het goed begrijp, wil je dat een extern iets (een DLL in jouw woorden) een panel voor je opmaakt. Mijn advies is dan: ga eens kijken wat je met packages kan. Pointers naar bv panels zijn in packages wel overdraagbaar namelijk. Je kunt dan een package maken met daarin een function CopyPanel (aPanel: TPanel): TPanel die dan de copy voor je uitvoert.
Maar ik acht de mogelijkheid van werken met TFrames ook niet helemaal heilloos. Waarom moet het in een DLL, eigenlijk?
Daar je blijkbaar te lui bent om mijn suggestie na te lezen heb ik het maar even voor je gedaan (heb hier wel Borland op m'n werk).Op vrijdag 02 november 2001 00:18 schreef jelmervos het volgende:
Oke, veel reply's, bedankt! Maar wat is nu de beste oplossing om een Panel (Frame?) uit een DLL naar een applicatie te gooien? Dus dat de DLL een Panel/Frame opmaakt en de applicatie hem toont.
Je maakt in de DLL de Panel aan met als Owner de global Application. Vervolgens maak je een TWriter tegen een TMemoryStream aan met in de Root-property je Panel. De binary blob uit die TMemoryStream pleur je naar de caller toe, die 'm met een TReader kan uitgenereren.
Je zult er wat meer leeswerk op moeten verrichten (er zijn o.a. globale functies om het proces te automatiseren), maar dit moet perfect kunnen werken.
Cartman, waar blijf je???
"The shell stopped unexpectedly and Explorer.exe was restarted."