zu laufzeit erstellte formen
-
hallo
ich benutze den bcb 6 professional
und hab en programm das ein paar dateien verwalten und so...
jetzt möchte ich mehrere dateien gleichzeitig in getrenten formen anzeigen lassen.
ich erstelle deshalb zur laufzeit 10 formen
Formen[x] = new TForm(this); Formen[x]->AutoSize=true; Formen[x]->BorderStyle=bsDialog; Formen[x]->Color=clFuchsia; Formen[x]->Position=poMainFormCenter; Formen[x]->TransparentColor=true; Formen[x]->TransparentColorValue=clFuchsia;auf jeder form stehen 12 TEdit's zur verfügung die ich so erstelle:
for(int y=0;y<12;y++) { Edit[y] = new TEdit(Formen[x]); Edit[y]->Parent = Formen[x]; Edit[y]->Top = 21 + (y+1)*27; Edit[y]->Height = 15; Edit[y]->Width = 145; Edit[y]->BorderStyle=bsNone; Edit[y]->Color=0x00EEEAEE; if(y<6) Edit[y]->Left = 73; else { Edit[y]->Left = 287; Edit[y]->Top -= 162; } Edit[y]->Show(); }jetzt ist meine frage:
was mache ich falsch, dass ich nicht
Formen[3]->Edit[7]->Text="ich bin ein text";machen kann??
Danke KY
-
Hallo
Zuerst mal ist "was mache ich falsch" keine ausreichende Fehlerbeschreibung.
Desweiteren fehlt so oder so zur Beantwortung die Deklarationen der Arrays. Denn die müßen, um deiner letzten Anweisung zu genügen, als public Member der Forms angelegt sein.
bis bald
akari
-
also ich habs bisher so
TForm *Formen[10]; TEdit *Edit[12];als private element in meiner header datei stehn...
er meint immer Edit ist kein Element von Formen
ich probiers mal wenn ich se public mach!!
danke für deine schnelle antwort!!
-
Hallo
und da haben wir schon den nächsten Fehler.Denn du hast ein Array der basisklasse TForm. und TForm hat bestimmt keine von deinen selber angelegten Membern. Sondern du must die Formklasse nehmen, die du verändert hast, u.a. wo eben das TEdit-Array drinne steht.
bis bald
akari
-
aaahhhh

ich verstehe...
ich hab ausversehen meine Edit's in der aufrufenden form deklariert

ok danke ich denk mal jetzt wirds klappen
-
mmmhhh...
wohl noch net ganz perfekt!!
wenn ich jetzt meine Formen mit
TfmProdukte *Formen[10];deklariere (TfmProdukte ist meine veränderte Formklasse)
dann meint er immer nach dem "*" "Typname erwartet"??
-
Hallo
weil du sicher vergessen hast, vor der Array-Deklaration die Header-Datei von TfmProdukte zu includen.
bis bald
akari
-
oooooooooohhhhhhhhh maaaaaaaaaaaaannnnn!!!!!!!!!!!
du hast ja sooooooooo recht
es ist einfach schon zu spät

cih glaub ich lasses proggen für heute und zock lieber noch ne runde

vielen dank für deine hilfe du hast mir echt sehr geholfen!!
wenn ich noch was hab dann meld ich mich morgen wieder!!
-
is wohl noch nicht ganz perfekt!!
jetzt hab ich alles geändert so wie du meintest, aber wenn ichs jetzt starte kommt:
"Im Projekt ... ist eine Exception der Klasse EResNotFound aufgetreten. Meldung 'Ressource TfmProdukte wurde
nicht gefunden' ...."er bricht in der "Forms.hpp" ab
und markiert mir folgende Zeile:
/* TCustomForm.Create */inline __fastcall virtual TForm(Classes::TComponent* AOwner) : TCustomForm(AOwner) { }hab schon en paar dinge probiert aber des bring alles nix!
-
Hallo
du hast irgendwo etwas falsch gemacht. Aber da ich keinen Gesamtüberblick über dein aktuelles Projekt habe, und ich keine Lust habe wild zu raten kann ich dir nur den Tip geben, nochmal alle Änderungen durchzugehen.
bis bald
akari
-
ich glaub des liegt an meinem Konstruktor!!
ohne den kommt ne fehler meldung das er nicht gefunden wurde!
TfmProdukte::TfmProdukte(TForm * form) :TForm(form) { }
-
Der Konstruktor muß so aussehen:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)Wobei TForm1 der Klassenname des Forms ist. In Deinem Fall wäre das also TfmProdukte.
-
mmhhh...
die Fehlermeldung kommt trotzdem noch...
ich hab den Konstruktor genauso geändert!!
-
meine header datei sied so aus:
//--------------------------------------------------------------------------- #ifndef ProdukteH #define ProdukteH //--------------------------------------------------------------------------- #include <StdCtrls.hpp> #include <Forms.hpp> #include <Graphics.hpp> //--------------------------------------------------------------------------- class TfmProdukte : public TForm { private: TEdit *Edit[12]; TImage *back; public: __fastcall TfmProdukte(TComponent * Owner); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall back_MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall FormCreate(TObject *Sender); }; //--------------------------------------------------------------------------- #endifkann des sein das ich bei den include was falsch gemacht hab??
wenn ich die weg lass, dann kennt er z.b TEdit nicht mehr!!
deshalb brauch ich die!die fehlermeldung kommt grade in dieser "Forms.hpp"!!!!
des ist die standart datei vom bcb 6 an der hab ich nix geänder.
muss ich vll da was ändern??
-
Dann poste doch bitte - zumindest auszugsweise - die entsprechenden Zeilen aus der Unit und der Headerdatei.
-
Hallo
die Includes sind in Ordnung.
kann es sein, das du in dieser Formheader die Deklarationen der Eventmethoden manuell verschoben hast? Ich weiß ja nicht wie das beim BCB6 ist, aber der BCB5 reagiert da immer sehr allergisch drauf.bis bald
aakri
-
ja hab ich aber die machen eigentlich keine probleme!!
-
also des Problem macht der hier:
class PASCALIMPLEMENTATION TForm : public TCustomForm { typedef TCustomForm inherited; public: void __fastcall ArrangeIcons(void); void __fastcall Cascade(void); void __fastcall Next(void); void __fastcall Previous(void); void __fastcall Tile(void); __property ActiveMDIChild ; __property ClientHandle ; __property DockManager ; __property MDIChildCount ; __property MDIChildren ; __property TileMode = {default=0}; __published: __property Action ; __property ActiveControl ; __property Align = {default=0}; __property AlphaBlend = {default=0}; __property AlphaBlendValue = {default=255}; __property Anchors = {default=3}; __property AutoScroll = {default=1}; __property AutoSize = {default=0}; __property BiDiMode ; __property BorderIcons = {default=7}; __property BorderStyle = {default=2}; __property BorderWidth = {default=0}; __property Caption ; __property ClientHeight ; __property ClientWidth ; __property Color ; __property TransparentColor = {default=0}; __property TransparentColorValue = {default=0}; __property Constraints ; __property Ctl3D = {default=1}; __property UseDockManager = {default=0}; __property DefaultMonitor = {default=3}; __property DockSite = {default=0}; __property DragKind = {default=0}; __property DragMode = {default=0}; __property Enabled = {default=1}; __property ParentFont = {default=0}; __property Font ; __property FormStyle = {default=0}; __property Height ; __property HelpFile ; __property HorzScrollBar ; __property Icon ; __property KeyPreview = {default=0}; __property Menu ; __property OldCreateOrder ; __property ObjectMenuItem ; __property ParentBiDiMode = {default=1}; __property PixelsPerInch ; __property PopupMenu ; __property Position = {default=0}; __property PrintScale = {default=1}; __property Scaled = {default=1}; __property ShowHint ; __property VertScrollBar ; __property Visible = {default=0}; __property Width ; __property WindowState = {default=0}; __property WindowMenu ; __property OnActivate ; __property OnCanResize ; __property OnClick ; __property OnClose ; __property OnCloseQuery ; __property OnConstrainedResize ; __property OnContextPopup ; __property OnCreate ; __property OnDblClick ; __property OnDestroy ; __property OnDeactivate ; __property OnDockDrop ; __property OnDockOver ; __property OnDragDrop ; __property OnDragOver ; __property OnEndDock ; __property OnGetSiteInfo ; __property OnHide ; __property OnHelp ; __property OnKeyDown ; __property OnKeyPress ; __property OnKeyUp ; __property OnMouseDown ; __property OnMouseMove ; __property OnMouseUp ; __property OnMouseWheel ; __property OnMouseWheelDown ; __property OnMouseWheelUp ; __property OnPaint ; __property OnResize ; __property OnShortCut ; __property OnShow ; __property OnStartDock ; __property OnUnDock ; public: #pragma option push -w-inl /* TCustomForm.Create */ inline __fastcall virtual TForm(Classes::TComponent* AOwner) : TCustomForm(AOwner) { } /Problem #pragma option pop #pragma option push -w-inl /* TCustomForm.CreateNew */ inline __fastcall virtual TForm(Classes::TComponent* AOwner, int Dummy) : TCustomForm(AOwner, Dummy) { } #pragma option pop #pragma option push -w-inl /* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { } #pragma option pop public: #pragma option push -w-inl /* TWinControl.CreateParented */ inline __fastcall TForm(HWND ParentWindow) : TCustomForm(ParentWindow) { } #pragma option pop };
-
kann es sein das die Form nicht kennt, weil sie hier
#include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------- USEFORM("Main.cpp", fmMain); USEFORM("Neuer_Kunde.cpp", fmNew); USEFORM("Kalender.cpp", fmKalender); USEFORM("Converter.cpp", fmKonvert); USEFORM("help.cpp", fmHelp); USEFORM("Bilder\Statistik.cpp", fmStatistik); <==keine fmProdukte //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->Title = "KY Programming Kundenverwaltung"; Application->CreateForm(__classid(TfmMain), &fmMain); Application->CreateForm(__classid(TfmNew), &fmNew); Application->CreateForm(__classid(TfmKalender), &fmKalender); Application->CreateForm(__classid(TfmKonvert), &fmKonvert); Application->CreateForm(__classid(TfmHelp), &fmHelp); Application->CreateForm(__classid(TfmStatistik), &fmStatistik); <==keine fmProdukte Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; } //---------------------------------------------------------------------------nicht auftaucht??
wenn ja, was müsste ich ändern???
-
Hallo
Das würde ja bedeuten das fmProdukte gar nicht in deinem Builder-prjekt integriert ist. Sollte das der Fall sein, dann kannst du Über das Menü Projekt/Dem Projekt hinzufügen die cpp-Datei des Forms in das Projekt einbinden. Dann werden auch die beiden von dir vermißten EInträge in der Hauptquelldatei automatisch eingefügt.
bis bald
akari