Von Delphi zu C++ Builder
-
Hallo,
ich habe einen existirenden Form der wurde schon programmiert und ich möchte diesen Form ableiten und bunutzen damit ich mit meinem Form am Enden behalten kann mit allen was schon in den existierenden Form ist . aber ich habe eine Hilfe Datei dabei und die bitten nur einen Code unter Delphi. es sieh so aus(Siehe Unten). und ich möchte jetzt wissen ob mir Jemand diesen Code in C++ Builder umwandeln kann.
Danke.
Die Hilfe Datei findet man unter ExpressScheduler.(developerExpress)Here is the code, which implements the custom Event modal dialog: // Delphi unit CustomizedEventEditorForm; // ... type TcxSchedulerEventEditorCustomized = class(TcxSchedulerEventEditor) gbClient: TcxGroupBox; lbFirstName: TcxLabel; teFirstName: TcxTextEdit; lbLastName: TcxLabel; teLastName: TcxTextEdit; lbGender: TcxLabel; cbGender: TcxComboBox; private { Private declarations } protected procedure LoadEventValuesIntoControls; override; procedure UpdateEventValuesFromControls; override; public { Public declarations } end; var cxSchedulerEventEditorCustomized: TcxSchedulerEventEditorCustomized; implementation uses cxSchedulerDialogs; {$R *.dfm} procedure TcxSchedulerEventEditorCustomized.LoadEventValuesIntoControls; begin inherited LoadEventValuesIntoControls; // call the parent’s method to load the data into the inherited editing controls located on the form try // load the data into the custom editing controls // no checking for a null value is needed. The null value is automatically replaced with empty string in the editing controls teFirstName.EditValue := Event.GetCustomFieldValueByName('FName'); teLastName.EditValue := Event.GetCustomFieldValueByName('LName'); cbGender.EditValue := Event.GetCustomFieldValueByName('Gender'); except on E: Exception do ShowMessage('Can''t load data' + #13#10 + E.Message); end; end; procedure TcxSchedulerEventEditorCustomized.UpdateEventValuesFromControls; begin inherited UpdateEventValuesFromControls; // call the parent’s method to post the data from the inherited editing controls located on the form try // post the data from the custom editing controls Event.SetCustomFieldValueByName('FName', teFirstName.EditValue); Event.SetCustomFieldValueByName('LName', teLastName.EditValue); Event.SetCustomFieldValueByName('Gender', cbGender.EditValue); FModified := True; except on E: Exception do ShowMessage('Can''t post data' + #13#10 + E.Message); end; end; initialization // to use the cxEventEditorClass constant include the cxSchedulerDialogs unit in the uses clause cxEventEditorClass := TcxSchedulerEventEditorCustomized; // indicate that the new Event modal dialog will be invoked at runtime
-
// TcxSchedulerEventEditorCustomized.h class TcxSchedulerEventEditorCustomized : public TcxSchedulerEventEditor { gbClient TcxGroupBox; lbFirstName TcxLabel; teFirstName TcxTextEdit; lbLastName TcxLabel; teLastName TcxTextEdit; lbGender TcxLabel; cbGender TcxComboBox; private: // { Private declarations } protected: void LoadEventValuesIntoControls(); void UpdateEventValuesFromControls(); public: // { Public declarations } } TcxSchedulerEventEditorCustomized cxSchedulerEventEditorCustomized; //Dont know what you mean here? /// TcxSchedulerEventEditorCustomized.cpp #include "TcxSchedulerEventEditorCustomized.h" #include "cxSchedulerDialogs.h" //??? not sure void TcxSchedulerEventEditorCustomized::LoadEventValuesIntoControls() { try { teFirstName.EditValue = Event.GetCustomFieldValueByName("FName"); teLastName.EditValue = Event.GetCustomFieldValueByName("LName"); cbGender.EditValue = Event.GetCustomFieldValueByName("Gender"); } catch( Exception E ) //?? Your exceptions class { ShowMessage(); //TODO String? Or Char? Or Ansistring? } } void TcxSchedulerEventEditorCustomized.UpdateEventValuesFromControls() { try { Event.SetCustomFieldValueByName("FName", teFirstName.EditValue); Event.SetCustomFieldValueByName("LName", teLastName.EditValue); Event.SetCustomFieldValueByName("Gender", cbGender.EditValue); FModified = True; } catch( Exception E ) { ShowMessage(); //TODO String? Or Char? Or Ansistring? } } // in your maincode cxEventEditorClass = TcxSchedulerEventEditorCustomized;Nicht getestet und sicher noch Fehler drin.
-
Ich denke mal, dass diese ganzen Tcx-Klassen von VCL-Klassen abgeleitet sind. Das bedeutet aber, das man unter C++ hier nur mit Pointern arbeiten kann. Das macht alles etwas komplizierter.
Warum soll das eigentlich in C++ umgewandelt werden? Der Builder enthält auch einen Pascal-Compiler und kann das somit auch direkt übersetzen.
-
die Tatsache ist , dass ich noch nie ein Pascal Buch aufgesclagen habe und was es nicht womit ich anfangen soll, deswegen ist für mich denke ich mal besser wenn ich die Hilfe Datei die unter Delphi in c++ umwandel und vertehe , vielleicht ist einfacher: Vielleicht.
-
Deswegen sage ich ja, übersetze deine Pascal-Datei direkt mit dem C++Builder.
Wenn du es wirklich umschreiben (lassen) willst, wäre es nützlich die Deklaration der Klasse TcxSchedulerEventEditor zu kennen (die dazugehörige Headerdatei). Du willst ja immerhin von dieser Klasse ableiten.
-
Ich habe keine Pascal Datei die ich im C++ Builder übersetzen soll, ausser die Datei von cxSchedulerEventEditor , aber in dieser Datei wenn ich diesen Code dort schreibe zeigt er mir 1000 Fehler.
-
Hallo, ich hab die Datei umgestezt(umgeschrieben) aber nach der Ausführung zeigt er mir folgende Fehler:
[C++ Fehler] cxSchedulerEventEditorCustomized.h(42): E2113 Virtuelle Funktion 'TcxSchedulerEventEditorForm1::LoadEventValuesIntoControls()' verursacht Konflikte mit der Basisklasse 'TcxSchedulerEventEditorForm'
Er weist auf diese Stelle in die Header Datei(Void LoadEventValuesIntoControls();[C++ Fehler] cxSchedulerEventEditorCustomized.h(43): E2113 Virtuelle Funktion 'TcxSchedulerEventEditorForm1::UpdateEventValuesFromControls()' verursacht Konflikte mit der Basisklasse 'TcxSchedulerEventEditorForm'
und hier ist
void UpdateEventValuesFromControls();[C++ Fehler] VersuchMainForm12.cpp(207): E2303 Typname erwartet
cxEventEditorClass =(diese Stelle) TcxSchedulerEventEditorForm1;[C++ Fehler] VersuchMainForm12.cpp(207): E2108 Ungültige Verwendung von typedef 'TcxSchedulerEventEditorForm1'
cxEventEditorClass =TcxSchedulerEventEditorForm1(hier am Ende);Bei mir ist TcxSchedulerEventEditorForm1; TcxSchedulerEventEdiorCustomized;
-
Hallo
verursacht Konflikte mit der Basisklasse 'TcxSchedulerEventEditorForm'
bedeutet das die Funktion in der abgeleiteten Klasse nicht wie erfordert den selbten Prototyp (Parameter, Rückgabewert) hat wie die gleichlautende virtuelle Funktion der Basisklasse
[C++ Fehler] VersuchMainForm12.cpp(207): E2303 Typname erwartet
Ungültige Verwendung von typedef 'TcxSchedulerEventEditorForm1'
Ich vermute richtig wäre es so
TcxSchedulerEventEditorForm1 *cxEventEditorClass = new TcxSchedulerEventEditorForm(??);Aber ich schließe mich Braunstein an, so ein paar aus dem Kontext gerissene Brocken reichen nicht aus. Sowohl die Deklaration der Basisklasse TcxSchedulerEventEditor als auch die der TcxSchedulerEventEditorCustomized sind dazu notwendig. Und wenn du offenbar so wenig Ahnung von den Grundlagen der OOP sowohl in Delpi als auch in C++ hast, solltest du lieber erstmal die Grundlagen lernen.
bis bald
akari