Einzelnen Beitrag anzeigen

0KommaNix

Registriert seit: 20. Jul 2006
Ort: Halle/Saale
23 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Diverse Komponenten: SVGImage, Adv. Memo, PaletteForm

  Alt 21. Jul 2006, 00:21
Hurra, es funktioniert!!!

Nun habe ich ein bisschen rumgespielt um herauszubekommen wie ich an besten Zoom und Bildlauf hinbekommen könnte. Einige Dinge funktionieren nicht wie ich es erwartet/gewünscht hätte, vielleicht liegt es ja daran, dass du noch an der Komponente arbeitest und noch nicht alles funktioniert wie geplant. Erschweren kommt hinzu, das ich nicht wissen kann für welchen Zweck du die Komponente entwickelst, bzw. wie dein Konzept aussieht.

Hier meine Wunschvorstellung/Vorschläge:

1.) Besser als den nun eingebaute Scale Eigenschaft würde es mir gefallen, wenn ich ein Eigenschaft ViewRect(Top, Left, Width, Height) hätte, mit dem ich angeben könnte welchen Teil des SVG-Canvas in TSVGImage dargestellt werden soll. Stretch, Center und Proportional müssten dazu abgeschalten sein. Der Anwender von ViewRect ist selbst für die Realisierung dieser Funktionen verantwortlich, indem er das Rechteck entsprechent wählt. Für Top und Left müssen auch negative Werte möglich sein um zentrieren zu können. Width und Height sind immer positiv. Damit das ganze Funktioniert müssen beim Laden einer SVG-Grafik die Eigenschaften Width und Height von TSVGImage.SVG auf die Boundingbox der Grafik gesetzt werden:
if exist SVG Attribut Width then
Boundingbox.Width := Max(Boundingbox.Width, SVG Attribut Width);
TSVGImage.SVG.Width := Min(TSVGImage.SVG.Width, Boundingbox.Width);
if exist SVG Attribut Heigth then
Boundingbox.Height := Max(Boundingbox.Height, SVG Attribut Heigth);
TSVGImage.SVG.Height := Min(TSVGImage.SVG.Height, Boundingbox.Height);

Ich stelle mir die Verwendung für eine zu programmierende TSVGScrollbox-Komponente dann so vor:
- Durch setzen von TSVGImage.SVG.Width / Height wird die Größe des leeren Dokumentes gesetzt.
Die Scrollbalken können bei Bedarf angezeigt werden.
- Beim Laden einer SVG-Grafik wird Viewbox ignoriert und die Width/Height Attribute wirken
wie oben beschrieben.

2.) Zuladen weiterer SVG-Grafik zulassen.

3.) Eigenschaft BackgrundColor: Ein-/Ausschaltbar. Ausgeschaltet entspricht den jetzigen verhalten. Eingeschaltet wird das Canvas zuerst in der Hintergrundfarbe gefüllt. Default Farbe ist Weiß.

4.) Darstellung auf dem Formular zur Entwicklerzeit:
Quelle: http://wiki.delphigl.com/index.php/T...tenentwicklung

Delphi-Quellcode:
procedure TSVGImage.Paint;
// ...
begin
  inherited;//Zeichen Procedure des Vorfahren aufrufen.
  if csDesigning in ComponentState then //Wenn sich die Komponente in Entwicklung befindet.
  begin
    {Zeichung eines gestrichelten Rahmens}
    Canvas.Brush.style := bsClear;//Durchsichtiges Rechteck
    Canvas.Pen.style := psDashDot;//Gestrichelte Linen
    Canvas.Rectangle(0,0,width,height);//Rechteck zeichnen
 
    {Namen der Komponente in die Mitte schreiben}
    canvas.TextOut((width - Canvas.TextWidth(Name)) div 2,(height - Canvas.TextHeight(Name)) div 2,name);
 
    {Keine weitern Zeichnungen mehr ausführen}
    exit;//Verlässt die Procedure
  end;
  //Normale Zeichen-Anweisungen
  //...
end;
5. Open XML wird ziemlich gelobt, es scheint nur wie so offt bei der Dokumentation zu hapern.
Habe zum Thema http://homepages.borland.com/ccalver...XMLSimple.html
gefunden.
Open XML hätte den Vorteil auf Linux portierbar zu sein und man bräuchte keine Drittanbieter Komponenten mit ausliefern. Beides ist für mich nicht so wichtig.

Gruß
Bernd
Bernd
  Mit Zitat antworten Zitat