Wohin mit dem Code
-
Hallo,
da ich noch ich solange mit dem BCB arbeitet, wäre es schön, wenn du mir das mal ein bißchen genauer beschreiben kannst. Ich weiß nich genau was du meinst, wie ich das mit dem TImage machen soll. Ich möchte, das die Linien gleich auf der Form gezeichnet werden.
-
hallo,
also da sind wir uns einig, das mit dem timer ist wohl nicht die lösung. eine timage kompo kann ihren inhalt selber neu zeichnen, es muss also nicht für das neuzeichnen gesorgt werden wie dies etwa beim form-canvas bzw. einer paint-box der fall ist.
platzier doch einfach eine timage, geb ihr Align=alClient und schreib in das OnShow des form:
void __fastcall TForm1::FormShow(TObject *Sender) { TRect rect; rect=GetClientRect(); //Edit1->Text = rect.top; Image1->Canvas->Pen->Color = RGB(0,0,0); Image1->Canvas->Pen->Width = 2; Image1->Canvas->MoveTo( rect.left+20,rect.top+20); Image1->Canvas->LineTo( rect.left+20,rect.bottom-20); Image1->Canvas->LineTo( rect.right-20,rect.bottom-20); }
also einfach nur noch das image qualifizieren und schon übernimmt das image das zeichnen anstatt dass man hierzu form-paint bemühen muss. musst vielleicht noch transparent= true setzen wenn du keinen hintergrund haben willst....
mfg
murph
-
Hallo,
ich bin glaub ich zu doof. Ich hab den Assistenten benutzt und eine ActiveX Form angelegt. Da find ich aber die OnShow nich. Könnt ihr mir da bitte nochmal helfen.
Danke
-
hola
OnShow ist im Objektinspektor nicht drinnen (zu midest bei mir auch net).
aber unter (wenn deine Form "Form" heisst) Form-> gibt es das OnShow.Meep Meep
-
Genau das mein ich ,bei ner normalen Form is es da aber bei der AxtiveX Form nich
-
doch bei ActiveFormX is es auch dabei. nur halt nich im objektinspektor.
schreibmal ActiveFormX->OnShow. da siehst es dann
Meep Meep
-
Und wohin soll ich das schreiben?
-
du brauchst jetzt ne eigene funktion:
void __fastcall FormShow(TObject *Sender); // im public // dann im konstruktor z.b: ActiveFormX = &FormShow;
hoffe das das so jetzt stimmt.
Meep Meep
-
Wenn ich das so versuche, mekert er immer rum, das eine Mehrdeutigkeit besteht.
Kannst du mir das bitte nochmal genau sagen wie du das gemacht hast?
-
// ActiveFormImpl1.h class TActiveFormX : public TActiveForm { __published: // Von der IDE verwaltete Komponenten private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TActiveFormX(HWND ParentWindow); __fastcall TActiveFormX(TComponent* AOwner): TActiveForm(AOwner) {}; void __fastcall tempo(TObject *z); }; //--------------------------------------------------------------------------- extern PACKAGE TActiveFormX *ActiveFormX; // ActiveFormImpl1.cpp TActiveFormX *ActiveFormX; //--------------------------------------------------------------------------- __fastcall TActiveFormX::TActiveFormX(HWND ParentWindow) : TActiveForm(ParentWindow) { this->OnShow = &tempo; } //--------------------------------------------------------------------------- void __fastcall TActiveFormX::tempo(TObject *z) { // test }
Meep Meep
-
Hallo,
also ich hab den Code probiert, der wird auch einwandfrei übersetzt, aber leider wird die Funktion Tempo nicht aufgerufen und an dem Konstrukter macht das Programm auch nicht halt, also irgendwas scheint da noch nich ganz hinzuhauen. funktioniert das bei dir?
-
ehrlich gesagt weiß ich das net. hab mit ActiveFormX noch nix gemacht bisher.
mir war eigendlich nur etwas langweilig, deshalb hab ich wegen dem OnShow nachgeguckt. ich hatte gehofft, das es funktioniert haette. vielleicht weiß ja jemand anders noch weiter.
irgendwie kann aber noch im ActiveFormProj1_TLB der hund begraben liegen. dort wird auch noch einiges fuer die activeform gemacht.Meep Meep