AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Strich in 2ten Formular

Ein Thema von svern · begonnen am 7. Nov 2004 · letzter Beitrag vom 7. Nov 2004
Antwort Antwort
svern

Registriert seit: 22. Mai 2004
14 Beiträge
 
#1

Strich in 2ten Formular

  Alt 7. Nov 2004, 22:28
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?
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#2

Re: Strich in 2ten Formular

  Alt 7. Nov 2004, 22:33
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
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Strich in 2ten Formular

  Alt 7. Nov 2004, 22:35
Zitat:
erst später sichtbar

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
Nico Müller
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#4

Re: Strich in 2ten Formular

  Alt 7. Nov 2004, 22:37
@nicodius: der strich deiner lösung ist aber auch nur solange sichtaber, wie die form nicht neugezeichnet wird!?
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Strich in 2ten Formular

  Alt 7. Nov 2004, 22:40
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:
begin
  BitBlt(Bit.canvas.handle, 0, 0, Form2.width, Form2.height, Form2.canvas.handle, 0, 0, srccopy);
end;
im activate

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
Nico Müller
  Mit Zitat antworten Zitat
svern

Registriert seit: 22. Mai 2004
14 Beiträge
 
#6

Re: Strich in 2ten Formular

  Alt 7. Nov 2004, 22:57
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:
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;
Naja, kein Strich da...

Habe noch zusätzlich eine Paintbox in Formular 2 gemacht, aber auch das brachte nichts.
Habt ihr noch nen Tipp?
  Mit Zitat antworten Zitat
svern

Registriert seit: 22. Mai 2004
14 Beiträge
 
#7

Re: Strich in 2ten Formular

  Alt 7. Nov 2004, 23:10
Habs hinbekommen, thx nochmal
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: Strich in 2ten Formular

  Alt 7. Nov 2004, 23:22
Hi Nico,

Zitat von Nicodius:
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
Wie sagt man doch so schön? Schmarrn!
@svern: du speicherst am Besten mit einer Boolean-Variable ob der Strich da sein soll oder nicht. Die PaintBox kennt ein Ereignis namens Delphi-Referenz durchsuchenOnPaint, welches ausgelöst wird, wenn die PaintBox neu gezeichnet wird. Darin einfach abfragen, ob der Strich da sein darf, und wenn ja, dann wird er gezeichnet.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz