Linie zeichnen

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Linie zeichnen

Beitrag von saul »

Hallo,

Code: Alles auswählen

	oXbp1 := XbpStatic():new( drawingArea, , {8,40}, {Rahmenbreite ,Fensterhoehe-90} )
	oXbp1:caption := "Neuanlage"
	oXbp1:clipSiblings := .T.
	oXbp1:type := XBPSTATIC_TYPE_GROUPBOX
	oXbp1:create()
	GraLine( oxbp1 , {10,10}, {10,10} )
Ich möchte in die Static Area oXBp1 eine horizontale Linie ziehen. Bei diesem Code bekomme ich aber eine Fehlermeldung
Interne Datenstrukturen beschädigt
Wo liegt mein Fehler?

mfg
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Linie zeichnen

Beitrag von Tom »

Wo liegt mein Fehler?
Tja. Wo soll man da anfangen? :wink:

Kurz gesagt: Das geht so nicht. Die GRA-Engine erwartet einen Presentation Space als Zeichenfläche, aber Du übergibst ein ganzes XpPart. Du musst Ownerdrawing verwenden, dann kannst Du auch z.B. eine Linie zeichnen und den Rest vom Betriebssystem malen lassen. Dafür muss die DrawMode-Eigenschaft des Buttons entsprechend belegt werden, dann muss eine Methode oder Funktion geschrieben werden, die in bestimmten Situationen (Button komplett zeichnen, Vordergrund/Hintergrund zeichnen, in bestimmten Zuständen zeichnen) aufgerufen wird. Die bekommt auch den PS als Parameter. Und da geht es dann auch.
Herzlich,
Tom
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Linie zeichnen

Beitrag von Werner_Bayern »

Servus Wolfgang,

oder direkt auf der DrawingArea mittels eines Statics:

Code: Alles auswählen

   oXbp := XbpStatic():new( drawingArea, , {1, nY}, {drawingArea:currentsize()[1] -2, 0})
   oXbp:type := XBPSTATIC_TYPE_RECESSEDLINE
   oXbp:create()
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Linie zeichnen

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben: So, 06. Mai 2018 18:40

Code: Alles auswählen

   oXbp := XbpStatic():new( drawingArea, , {1, nY}, {drawingArea:currentsize()[1] -2, 0})
   oXbp:type := XBPSTATIC_TYPE_RECESSEDLINE
   oXbp:create()
sollte die XbpStatic nicht wenigsten 1 Pixel Höhe haben oder geht es wegen dem o:Type auch so :?:
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Linie zeichnen

Beitrag von Werner_Bayern »

Servus Jimmy,

bei mir funktioniert es so.
es grüßt

Werner

<when the music is over, turn off the lights!>
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: Linie zeichnen

Beitrag von saul »

Hallo,
funktioniert bei mir auch. Danke

Wolfgang
Antworten