Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - von form1(button) in form2 komponenten createn?


ALF - Mo 28.09.09 20:37
Titel: von form1(button) in form2 komponenten createn?
Hi,

ich möchte über den button in der form1, auf der form2 zur laufzeit z.B. ne groubbox einfügen
und in der groubox müssen auch noch label, gauge mit rein!

Habe aber nicht den geringsten Ansatz wie ich das machen soll!
(ist lange her das ich in delphi gecodet habe) :oops:

das ganze soll später über dragdrop funktionieren !

aber erst mal zum Anfang über ein button :wink:

Gruss Alf


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 28.09.2009 um 21:52


HelgeLange - Mo 28.09.09 20:45


Delphi-Quelltext
1:
2:
3:
4:
begin
  AGroupBox := TGroupBox.Create(Form2);
  TLabel.Create(AGroupBox);
end;


Das sollte Dir einen Ansatz geben :)


anbest - Mo 28.09.09 20:58


Delphi-Quelltext
1:
2:
var
  AGroupBox: TGroupBox;
fehlte. ^^


ALF - Mo 28.09.09 21:00

thx für schnelle Antwort.

muss ich aber nicht erst AgroupBox in der Form1 definieren!!
"undefinierter Bezeichner 'AGroupBox' "

wenn es doch so einfach währe :cry:
Alf


anbest - Mo 28.09.09 21:02

Hab ich eben doch geschrieben... ;-)


Delphi-Quelltext
1:
2:
var
  AGroupBox: TGroupBox;


ALF - Mo 28.09.09 21:10

habe ich doch zu spät gesehen :wink:

aber irgendwas fehlt noch mh....
wenn ich alleas starte und den button klicke ist in der form2 keine box zusehen, auch mit AgroupBox.Show
nicht.

noch nen tipp für mich!!??

Gruss
ALF


Xentar - Mo 28.09.09 21:17


Delphi-Quelltext
1:
AGroupBox.Parent := Form2;                    

?


anbest - Mo 28.09.09 21:19


Delphi-Quelltext
1:
2:
3:
  AGroupBox.Left := 8;
  AGroupBox.Top := 8;
  AGroupBox.Show;


?


ALF - Mo 28.09.09 21:22

thx funct

wusste ich mal mit parent, ist aber lange her :(

gruss alf


HelgeLange - Mo 28.09.09 21:52

Parent ist verantwortlich für zeichnen eines Controls, Owner für das zerstören :)


ALF - Mo 28.09.09 23:25

ha,
schon kommt das nächste problem!!

da ich von der einen komponente zur laufzeit mehrere erstellen muss funct die sache doch nicht so leicht. z.B. combobox1 combobox2 usw.

Brauche also doch mehr infos, wie man das macht :oops:

gruss
Alf


Xentar - Mo 28.09.09 23:32

Bist du sicher, dass dein Konzept stimmt..?
Wieso ausgerechnet, erst zur Laufzeit?

Zur Not alles auf ein PageControl packen, HideTabs, und die Seite umschalten, oder ähnliches.


ALF - Mo 28.09.09 23:54

kurz info zu meinem projekt:
wird ein player
kommentar kenn ich: "gibt doch schon so viele!"
Aufbau:
-form1 ist das grundgerüst
- mit add füge ich form2=player1, form3=player2 usw ein funct auch schon :)
- mit add füge ich nun in den jeweiligen player die abzuspielenden dateien ein

das soll nun so ausehen

für jeden titel muss ich eine komponente wie TGauge, TSlidbar einfügen
in Tgauge steht dann der titelname drin, Tslidbar ist für die grundeinstellung der lautstärke des jeweiligen Titels usw.

habe das auch schon mal gesehen bzw gelesen wie das mit der ein und der selben componenten geht weis aber leider nicht mehr wo!??

hoffe das mein problem damit erkannt ist!

Gruss Alf


Xentar - Di 29.09.09 00:04

Na, wenn das so ist, kann ich dir Frames / TFrame empfehlen.

Außerdem: Wenn du eine Komponente händisch erzeugst, kannst du natürlich auch ganz viele per Schleife erzeugen. Reicht das, als Denkanstoß? ;)


Narses - Di 29.09.09 00:12

Moin!

Warum sollte man denn bei einem Player für jeden Track ein neues Formular/Komponente/etc anlegen müssen? :shock: Hört sich eher so an, als hätte das Konzept einen Knacks... :? :gruebel:

cu
Narses


ALF - Di 29.09.09 00:28

währe schön wenn die info reicht.
problem ist immer noch wie ich zb. gauge1 - gauge(x) erstelle wenn ich nicht weis
wie viele erstellt werden müssen

das grundgerüst haben mir die anderen ja schon geposted, gilt aber ebend nur für einmaliges erstellen der komponente.

wie gesagt habe ich das schon mal gelesen find es aber nicht mehr!


Zitat:

Narses

Warum sollte man denn bei einem Player für jeden Track ein neues Formular/Komponente/etc anlegen müssen?


nicht für jeden track einen player!!!

es werden 1-x player benötigt. und in diesen playern werden die tracks eingefügt.
das ausehen soll aber ebend mit gauge und slidebar für jeden track sein.

omg alles so kompliziert :cry:

1

gruss alf


HelgeLange - Di 29.09.09 02:41

uhm... warum beschäftigst Du Dich mit etwas kompliziertem wie einem Player, wenn Du nicht mal die grundkenntnisse in Delphi hast?
Such mal nach Schleifenprogrammierung im netz.. Oder am besten einen ganzen Grundkurs in Delphi :)
Wir sitzen ja nicht hier, um Dir Delphi beizubringen, sondern bei Problemen zu helfen : meine Lösung für Dein problem ist ganz klar : lern Delphi grundkenntnisse :)

(no offense)


ALF - Di 29.09.09 22:17

Die Grundkentnisse durften mir ja wohl klar sein!

Sowas wie, eine Komponente mehrmals zur Laufzeit zu erstellen, lernst du in keinem Grundkurs!
Steht noch nicht mal im Delphibuch bzw. in irgeneiner Hilfe!!
Es geht nicht um den Player sondern um eine komponente die zur laufzeit mehrmals erzeugt werden muss.
Dein Argument ist sicher nicht richtig, es sei, du kannst mir sagen wo ich das im DelphiHandbuch oder Hilfe finde!?
Wenn alles so einfach währe, gäbe es kein Forum, und Du könntest mich nicht runter machen :oops:
Wenn es Dir hilft ok. Mir gibt dies aber keine Hilfe weder ein Denkanstoss!

Gruss ALF


Xentar - Di 29.09.09 22:50

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
problem ist immer noch wie ich zb. gauge1 - gauge(x) erstelle wenn ich nicht weis
wie viele erstellt werden müssen

Wenn DU das vorher nicht weiß - woher soll es dann dein Programm wissen? Raten? Das geht mit random(123456789) ;)
Und wenn dir nun einfällt, dass du es ja doch weißt, hier nochmal ein Denkanstoß:
- Array of TSomething
- Schleife
- MyArray[i] := TSomething.Create(foo);

ist doch auch nichts anderes, als mit einer Komponente?


HelgeLange - Di 29.09.09 23:15

Wenn Du Dir Delphi (oder auch irgendeine andere Programmiersprache) anschaust, dann fällt Dir schnell auf, dass es nur ein paar Befehle gibt, mit denen man alles machen kann. Denkst Du, der Compiler kennt TForm oder TGauge oder TLabel ?
Programmieren ist der logische Einsatz dieses kleinen Befehlssatzes in verschiedenen Kombinationen um zum gewünschtem Ergebnis zu kommen.

ich habe lange nicht gezählt, aber ich denke, Assembler kommt mit unter 200 Befehlen aus und jedes Windows Programm lässt sich in diese 200 Befehle zerlegen.

Eine Schleife ist einer dieser Befehle, den man so oder so kennen muss und damit umgehen. Ohne Schleifen programmieren zu können kommt man nicht aus.

Also es bleibt dabei, Grundkurs Delphi, dort anschauen Schleifen und dynamische Arrays (da Du ja die Anzahl Deiner TGauge ned kennst). Mit diesen beiden Sachen kannst Du genau das programmieren, was Du willst.
Ich könnte Dir den Code auch in 30 sekunden schreiben, nur hat das ja keinen Lerneffekt für Dich. :D


ALF - Di 29.09.09 23:56

THX; ist doch ein richtiger Denkanstoss !! :wink:
Aber wie es nun mal so im Leben ist: "auf die einfachsten Dinge kommt man nicht",
da nützt auch kein Delphibuch!!!sondern: nur prima user im Forum :D

Gruss ALF