Komponenten in eigener Funktion benutzen???
-
Also eigentlich hatte ich das richtig abgeschrieben, dacht ich:
//Deklaration der Funktion void newcheck(TComponent*, TWinControl*, TCheckBox, int, int); //Funktion selber void newcheck(TComponent* owner, TWinControl* parent, TCheckBox check[], int i, int pos){ // CheckBox für Aktivierung zur Simulation des Packvorgangs check[i] = new TCheckBox(owner); check[i]->Parent = parent; check[i]->Left = 20; check[i]->Top = 2 + i*30 - pos; check[i]->Checked = true; } //Funktionsaufruf void __fastcall Tfrm_Packer::btn_addClick(TObject *Sender) { newcheck(this, scr_paletten, check_simulator, i, scr_paletten->VertScrollBar->Position); }
Der Fehler kommt in der Zeile
check[i] = new TCheckBox(owner);
-
Hallo
Meine Vermutung ist fast richtig, und der Fehler basiert auf meinem Code. Auch im Array check müßen natürlich Pointer rein
void newcheck(..., TCheckBox* check[], ...)
bis bald
akari
-
Achso
naja die Pointer und ich mögen uns noch nich so richtig xD da bin ich noch nicht ganz hintergestiegen.
-
Da hab ich mal noch ne kleine Frage
Wenn ich jetzt noch eine Caption-/Text-eigenschaft eines Labels oder Edits mit übergeben will, wie mache ich das am Besten? Kann man da auch so eine Klasse übergeben/ benutzen?
-
Hallo
Wenn du in deiner Generierungsfunktion gleich noch die Eigenschaft Label/Text auf einen bestimmten Wert setzen willst, dann übergib einfach noch ein AnsiString.
//Deklaration der Funktion void newedit(TComponent*, TWinControl*, TEdit* edit[], int, int, AnsiString text); //Funktion selber void newedit(TComponent* owner, TWinControl* parent, TEdit* edit[], int i, int pos, AnsiString text){ // CheckBox für Aktivierung zur Simulation des Packvorgangs edit[i] = new TEdit(owner); edit[i]->Parent = parent; edit[i]->Left = 20; edit[i]->Top = 2 + i*30 - pos; edit[i]->Text = text; } //Funktionsaufruf void __fastcall Tfrm_Packer::btn_addClick(TObject *Sender) { newedit(this, scr_paletten, edit_simulator, i, scr_paletten->VertScrollBar->Position, "Hallo"); }
bis bald
akari
-
Aber sowas wie die Eigenschaft selber übergeben geht nicht?
//Funktionsaufruf void __fastcall Tfrm_Packer::btn_addClick(TObject *Sender) { newedit(this, scr_paletten, check_simulator, i, scr_paletten->VertScrollBar->Position, edit2->Text); }
-
Hallo
Selbstverständlich kannst du das so machen. Der AnsiString-Wert aus edit2->Text wird kopiert und an das neu erstellte Edit übergeben.
bis bald
akari
-
Ja ich hatte mir das ja auch so gedacht gehabt, aber leider bekam ich dann die Fehlermeldung:
[BCC32 Fehler] start.cpp(165): E2285 Keine Übereinstimmung für 'newedit(Tfrm_startPacker * const,TScrollBox *,int,int,const int,UnicodeString)' gefunden
Ich habs dann mit Char* to String und ähnlichem probiert, aber hatte alles nichts gebracht ...
Edit:
Fehler selber schon gefunden, es war das vergessen der Übergabe des Komponentennames. Mal wieder n doofer Anfängerfehler von mir
-
Hallo
Du hättest schon sagen können das du mit dem neusten Builder arbeitest... der verwendet anstelle von AnsiString eben UnicodeString
. Also must du nur deine Funktion noch korrigieren:
void newedit(TComponent*, TWinControl*, TEdit* edit[], int, int, UnicodeString text);
Besser ist natürlich einfach String anstatt UnicodeString zu schreiben, dann sucht der Builder automatisch den richtigen Typ aus.
bis bald
akari
-
Hallo, kann mir jemand helfen????
Bekomme diese Fehlermeldung:
[bcc32 Fehler] Main_Unit.cpp(232): E2285 Keine Übereinstimmung für 'TForm4::TForm4(void *)' gefundenForm4 = new TForm4(static_cast<void *> (NULL));
-
Wieso schreibst du in einen 7 Jahre alten Thread und
wo hast DuForm4 = new TForm4(static_cast<void *> (NULL));
her. Der Compiler sagt dir es gibt keinen Konstruktor der einen void-Zeiger als Parameter hat.