AGB  ·  Datenschutz  ·  Impressum  







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

TExpander unter Delphi 10.4.2 Fehler

Ein Thema von skoschke · begonnen am 18. Mär 2021 · letzter Beitrag vom 19. Mär 2021
Antwort Antwort
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.559 Beiträge
 
Delphi 12 Athens
 
#1

AW: TExpander unter Delphi 10.4.2 Fehler

  Alt 19. Mär 2021, 09:32
Natürlich funktioniert Dein Code hier nicht:

Delphi-Quellcode:
 b := TBitmap.Create;
  if b.Canvas.BeginScene then
  begin
    i := 4;

    b.canvas.EndScene;
  end;
geenauowenig wie Dein anderes Beispiel:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var
  MyRect: TRectF;
begin
  // sets the circumscribed rectangle of the ellipse
  MyRect := TRectF.Create(50, 40, 200, 270);
  // draws the ellipse on the canvas
  Image1.Bitmap.Canvas.BeginScene;
  Image1.Bitmap.Canvas.DrawEllipse(MyRect, 40);
  Image1.Bitmap.Canvas.EndScene;
end;
Dein Bitmap hat immer die Größe 0,0.

Auf welchen Canvas willst Du dann auf welcher Postion malen?
Logischerweise funktioniert dann auch kein Canvas.beginscene....

Mit anderen Worten: Das funktioniert:

Delphi-Quellcode:
b := TBitmap.Create (300,300);
  if b.Canvas.BeginScene then
  begin
    i := 4;

    b.canvas.EndScene;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.559 Beiträge
 
Delphi 12 Athens
 
#2

AW: TExpander unter Delphi 10.4.2 Fehler

  Alt 19. Mär 2021, 09:43
Ach ja und ergänzend zu meiner vorherigen Antwort:

WANN willst Du auf den Canvas "des Expanders" zeichnen?

Anders als in der VCL hat in der FMX nicht jedes Control einen eigenen Canvas, sondern es existiert nur ein großer Canvas der Form, der von den einzelnen Controls verwendet wird.

D.H. Du kannst nicht einfach irgendwann auf den Canvas zeichnen.
Sondern Du machst es in den Events, wenn der Expander gezeichnet werden soll, also z.B:
Delphi-Quellcode:
procedure TForm38.Expander1Paint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
begin

end;
Dann hast Du einen Canvas, der in diesem Moment frei ist und auch den Canvas-Bereich, der für dieses Control gilt.

Geändert von Harry Stahl (19. Mär 2021 um 10:11 Uhr)
  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 01:39 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