AGB  ·  Datenschutz  ·  Impressum  







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

PL TextEngine: Klassenstruktur Problem.... ?

Ein Thema von mimi · begonnen am 7. Sep 2009 · letzter Beitrag vom 10. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

PL TextEngine: Klassenstruktur Problem.... ?

  Alt 7. Sep 2009, 21:11
Hallo,
vor vier Tagen habe ich hier eine Frage gestellt: http://www.lazarusforum.de/viewtopic.php?f=18&t=2905 könnt ihr sie mir beantworten ?

Wenn ihr mir Informationen braucht könnt ihr es gerne sagen. Das Projekt möchte ich eigentlich noch nicht Hochladen, aber wenn jemand wirklich bereit ist sich das Projekt anzuschauen würde ich es ihn zukommen lassen. Ich komme aufjedenfall seit Tagen nicht mehr weiter. Die Lösung die ich gefunden habe gefällt mir einfach nicht(steht im Link).
Weil sie meine ganze Struktur durcheinander bringen würde. Auf der anderen Seite könnte ich weitere Fehler in meiner Klassenstruktur gemacht haben, die damit zusammen hängen.

Danke !


PS: Ich hoffe ihr habt nichts gegen dieser Art von "Crossposting"(hieß das so) ? Bei Sprache gebe ich erst einmal Lazarus an. Auch wenn es sich um "Object Pascal", handelt.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: PL TextEngine: Klassenstruktur Problem.... ?

  Alt 7. Sep 2009, 21:48
Dein Text ist einfach zu allgemein formuliert, als das man dir konkret helfen könnte. Dafür müsste man alles selber implementieren, um deine beschriebenen Probleme nachempfinden zu können, um dann Lösungen zu erarbeiten.
Aber ehrlich gesagt, habe ich dafür keine Zeit und Lust. Vermutlich wird es anderen ähnlich gehen, deshalb wird dir auch nicht geholfen, aber vielleicht irre ich mich ja auch...
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#3

Re: PL TextEngine: Klassenstruktur Problem.... ?

  Alt 7. Sep 2009, 21:54
Ja ! das habe ich auch schon vermutet. Leider kann ich es nicht an einem Test Projekt nach bilden. Ich könnte höchsten die beiden Unit's um die es hier geht rein stellen.

Ich hatte die Hoffnung das ich Irgendwo einfach nur einen kleinen Fehler gemacht habe.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: PL TextEngine: Klassenstruktur Problem.... ?

  Alt 8. Sep 2009, 07:29
Auch um kleine Fehler zu finden, benötigt man irgendwas, worin man diese sucht...
Die Methoden die sich mit dem Canvas und dem Zeichnen beschäftigen, dürften wohl am wichtigsten sein.
Deine Beschreibung beinhaltet nicht mal von welcher Klasse jeweils abgeleitet wurde.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: PL TextEngine: Klassenstruktur Problem.... ?

  Alt 8. Sep 2009, 12:40
Die ersten Klassen sind jeweils im Moment von TObject abgeleitet. Direkt. Das Ändere ich später allerdings noch, so dass die Klassen auch im OI angezeigt werden können.
Delphi-Quellcode:
procedure TPLTE_ObjectBaseSurface.Paint;
begin
  if Visible then begin
    Style.ToCanvas(canvas);
    Canvas.Brush.Color:=clBlue;
    Canvas.FillRect(Left, Top, (Left+Width)-ExtraWidht, (Top+Height)-ExtraHeight);
  end;
end;
Z.B. hier sollte man doch annehmen, das ALL Rechtecke die gezeichnet werden, blau sind oder ? Sind sie aber nicht. nehme ich das FillRect raus, wird gar kein Rechteck gezeichnet.

Ich hänge mal beide Units hier dran. Die beiden Units beinhalten allerdings nur einen kleinen Teil. Hinzu kommen noch Container und die eigentliche "TPLTextEngine", die ist direkt von TCusomControl abgeleitet. Container haben ihr eigenen Canvas(eine Variable vom Typ TBitMap).
Allerdings sind auch Container Objekte. Zum unterschied: Container haben ihr eigenen Buffer, Objekte zeichnen nun in diesen Buffer rein. Wenn Nötig kann ich die Container Unit auch gerne hochladen.

Erst einmal Danke für eure Antworten. Ich dachte ich hätte genügend Informationen geliefert mit meiner "kleinen" Beschreibung. Das Ganze Projekt besteht im Moment aus Vier Units und einem "Fenster"
Angehängte Dateien
Dateityp: pas uplte_style_111.pas (27,6 KB, 4x aufgerufen)
Dateityp: pas uplte_objects_114.pas (14,3 KB, 3x aufgerufen)
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: PL TextEngine: Klassenstruktur Problem.... ?

  Alt 8. Sep 2009, 15:47
Auffallend ist in der Unit uPLTE_Style, daß die Objekte teilweise Objektproperty besitzen, diese Objekte aber nicht selbst erzeugen. Intern werden diese Objektproperty benutzt ohne auf nil zu prüfen. Es gibt auch keine Benachrichtigung wenn solche Objekte freigegeben werden.

Wenn tatsächlich ein und das selbe Objekt verwendet wird, wäre die Verwendung von Interfaces mit Referenzzählung sicherer.
Sollen aber nur die Eigensschaften zum Zeitpunkt der Zuweisung übernommen werden, muss die jeweilige Klasse eigene Objekte erzeugen und die Eigenschaften per Assign übernehmen.

Die Ursache des jetzigen Darstellungsfehlers ist aber wahrscheinlich nicht in diesen Units zu suchen.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: PL TextEngine: Klassenstruktur Problem.... ?

  Alt 8. Sep 2009, 20:26
Zitat:
Sollen aber nur die Eigensschaften zum Zeitpunkt der Zuweisung übernommen werden, muss die jeweilige Klasse eigene Objekte erzeugen und die Eigenschaften per Assign übernehmen.
Du meinst ich verwende in der Text Objekt Klasse z.b. den Style Text Objekt, sollte diese Klassen diesen Style erzeugen, aber sollte jetzt auch die Surface Klasse, ein eigenen Style erstellen und per Assign die Notwendigen Eigenschaften übernehmen ? Quasi so:
Zitat:
- Surface Klasse: Eigenen Surface Style erstellen
- Surface Style
- Text Klasse: Eigenen Style für Text Objekt erstellen
- Text Style
So ähnlich hatte ich das am Anfang. Das mit Assign ist neu. Das könnte ich versuchen.

Zitat:
Die Ursache des jetzigen Darstellungsfehlers ist aber wahrscheinlich nicht in diesen Units zu suchen.
Es gibt noch zwei Units, an den es Theoretisch liegen könnte. Glauben tue ich es zwar nicht.

Könnte die Ursache es auch eine Ursache sein, dass sich irgendwie Objekte überlagern ? So sieht es für mich aus. Allerdings weiß ich nicht was ich dagegen tun kann. Was ich auch nicht verstehe ist, wenn ich kurz bevor ich den Hintergrund Zeichne, die Hintergrund Farbe setzte, müssten eigentlich alle Objekte in dieser Farbe gezeichnet werden.
Tut es aber nicht. Das Seltsame ist auch: Mit der Font Eigenschaft geht es. Nur die Brush Eigenschaft stellt sich quer.

Wenn nötig, lade ich die zwei anderen Units auch noch hoch. Aber ich werde erst mal deinen Vorschlag ausprobieren sobald mir klar ist, wie du es genau gemeint hast.

Zitat:
Auffallend ist in der Unit uPLTE_Style, daß die Objekte teilweise Objektproperty besitzen, diese Objekte aber nicht selbst erzeugen
Ja, das ist Absicht. Ich dachte dadurch könnte den Fehler beseitigen. Davor hatte jede Klasse ihr eigenen Style erstellt, halt passend zum Objekt.

Erst mal Danke für deine Antworten und für dein Vorschlag. Wie genau meinst das mit Assign ?
Beim Zeichnen rufe ich nur ToCanvas auf. Das ist die meist verwendete Methode. Alle Style haben sie.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: PL TextEngine: Klassenstruktur Problem.... ?

  Alt 9. Sep 2009, 08:01
Meine Bedenken beziehen sich auf den Schreibzugriff auf Objektproperty, z.B. auf Border in der Klasse TPLTE_Style_ObjectSurface.
Das Objekt fBorder wird von der Klasse erzeugt und freigegeben, andere Objekte sollten deshalb keinen direkten Schreibzugriff erhalten.
Das sollte IMO so aussehen:
Delphi-Quellcode:
type
  TPLTE_Style_ObjectSurface = class(TPLTE_Style_BaseExt)
  private
    fBorder: TPLTE_Style_Border;
  protected
    procedure SetBorder(aBorder: TPLTE_Style_Border); virtual;
  published
    property Border: TPLTE_Style_Border read fBorder write SetBorder;
  end;

procedure TPLTE_Style_ObjectSurface.SetBorder(aBorder: TPLTE_Style_Border);
begin
  fBorder.Assign(aBorder);
end;
Wenn du das Projekt hier nicht an deinen Beitrag hängen möchtest, kannst du es mir auch per PN zukommen lassen.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: PL TextEngine: Klassenstruktur Problem.... ?

  Alt 9. Sep 2009, 11:15
Danke für den Tipp. Ich werde es gleich mal Testen.

Das heißt also, jedes Objekt sollte seine eigene Style Klasse erzeugen. Beim Schreibzugriff verwende ich dann einfach Assigen und Caste dann.

PS: Ich habe dir eine PM gesendet. Der Soruce-Code ist nicht gerade aufgeräumt du wirst viele "Code Leichen" finden. Es ist halt ein Prototyp.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#10

Re: PL TextEngine: Klassenstruktur Problem.... ?

  Alt 9. Sep 2009, 11:20
Ich habe es jetzt so probiert:
Delphi-Quellcode:
procedure TPLTE_Style_ObjectSurface.SetBoder(const AValue: TPLTE_Style_Border);
begin
  fBorder.Assign(AValue);
end; // TPLTE_Style_ObjectSurface.SetBoder

procedure TPLTE_Style_ObjectSurface.SetBrush(const AValue: TPLTE_Style_Brush);
begin
  fBrush.Assign(AValue);
end; // TPLTE_Style_ObjectSurface.SetBrush
leider keine Auswirkung. Ich hänge mal ein Bild dran. Dann weißt du was ich meine.

Eigentlich sollte es keinen Orange Fläche geben, sondern nur Blau.
Miniaturansicht angehängter Grafiken
te01_661.jpg  
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:52 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