![]() |
Strich in 2ten Formular
Hey,
ich versuche gerade krampfhaft einen Strich in meinem 2ten Formular (erst später sichtbar) zu erzeugen.... natürlich klappt es nicht. Habe in einer Prozedur diesen Quellcode:
Delphi-Quellcode:
canvas.pen.color:=clred;
LINKS:=(80+((Akt_KNOTEN -1)*96)); // Ausgangsknoten OBEN:=(Y_Werte[Akt_KNOTEN] + 8); // Ausgangsknoten Form2.Canvas.Moveto(LINKS,OBEN); ZL:=(((KN_Zielknoten[Akt_KNOTEN]-1)*96)-6); // Zielknoten ZO:=(Y_Werte[KN_Zielknoten[Akt_KNOTEN]] +8); Form2.Canvas.Lineto(ZL,ZO); Doch wenn ich dann nach ablauf der Prozedur diese Formular ansehen will (Form2.showmodal), dann ist der Strich nicht da... weiß jemand warum nicht??? Wie bekomme ich meine Striche? |
Re: Strich in 2ten Formular
damit der strich IMMER sichtbar ist, musst du die prozedur in den OnPaint vom 2ten form schreiben!
ansonsten wird der strich gezeichnet, das fenster ist noch nicht sichtbar. wenn das 2te fenster dann sichtbar ist, wird es ja neugezeichnet und der strich ist weg! /edit: oder ein tbitmap aufs 2te form knallen und auf dessen image.canvas zeichnen |
Re: Strich in 2ten Formular
Zitat:
daran scheiterts .. du musst das ganze zuerst in ein bitmap speicehrn würde ca so aussehen
Delphi-Quellcode:
var bit : TBitmap; begin Bit := TBitmap.Create(); Bit.Width := Form2.Width; Bit.height := Form2.Height; Bit.canvas.pen.color:=clred; LINKS:=(80+((Akt_KNOTEN -1)*96)); // Ausgangsknoten OBEN:=(Y_Werte[Akt_KNOTEN] + 8); // Ausgangsknoten Bit.Canvas.Moveto(LINKS,OBEN); ZL:=(((KN_Zielknoten[Akt_KNOTEN]-1)*96)-6); // Zielknoten ZO:=(Y_Werte[KN_Zielknoten[Akt_KNOTEN]] +8); Bit.Canvas.Lineto(ZL,ZO); Form2.Canvas.Draw(0,0,Bit); end; wenn was nicht stimmt .. hab das ganze in 1 minute geschrieben :stupid: |
Re: Strich in 2ten Formular
@nicodius: der strich deiner lösung ist aber auch nur solange sichtaber, wie die form nicht neugezeichnet wird!?
|
Re: Strich in 2ten Formular
jo aber da musst nur hier suchen .... per ApplicationEvents(in der komponenten liste bei "zusätzliches(weiß nicht ab welcher delphi version )) auf das deactivate, minimize etc agieren
im deactivate
Delphi-Quellcode:
im activate
begin
BitBlt(Bit.canvas.handle, 0, 0, Form2.width, Form2.height, Form2.canvas.handle, 0, 0, srccopy); end;
Delphi-Quellcode:
begin
PaintBox1.Canvas.Draw(0, 0, Bit); end; und das halt bei minimaize auch noch einführen
Delphi-Quellcode:
begin
BitBlt(Bit.canvas.handle, 0, 0, Form2.width, Form2.height, Form2.canvas.handle, 0, 0, srccopy); end; so leicht geht das :zwinker: |
Re: Strich in 2ten Formular
Hab jetzt in Unit1:
Delphi-Quellcode:
bit := TBitmap.Create;
bit.Canvas.pen.Color := clRed; bit.Width := Form2.Width; bit.Height := Form2.Height; bit.Canvas.Moveto(Links,Oben); bit.Canvas.LineTo(ZL,ZO); Form2.Canvas.Draw(0,0,bit); und in Unit2:
Delphi-Quellcode:
Naja, kein Strich da...
procedure TForm2.FormActivate(Sender: TObject);
begin PaintBox1.Canvas.Draw(0, 0, bit); end; procedure TForm2.FormDeactivate(Sender: TObject); begin BitBlt(bit.canvas.handle, 0, 0, Form2.width, Form2.height, Form2.canvas.handle, 0, 0, srccopy); end; Habe noch zusätzlich eine Paintbox in Formular 2 gemacht, aber auch das brachte nichts. Habt ihr noch nen Tipp? |
Re: Strich in 2ten Formular
Habs hinbekommen, thx nochmal
|
Re: Strich in 2ten Formular
Hi Nico,
Zitat:
@svern: du speicherst am Besten mit einer Boolean-Variable ob der Strich da sein soll oder nicht. Die PaintBox kennt ein Ereignis namens ![]() Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz