AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel
Thema durchsuchen
Ansicht
Themen-Optionen

Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

Ein Thema von Sel2012 · begonnen am 12. Jun 2015 · letzter Beitrag vom 14. Jun 2015
Antwort Antwort
Seite 1 von 3  1 23      
Sel2012

Registriert seit: 6. Jun 2015
Ort: 31535
103 Beiträge
 
Delphi XE5 Professional
 
#1

Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 12. Jun 2015, 09:39
Nachdem es mir gelang mit Delphi/RAD Studio passable Anwendungen zu erstellen und ich diese "irgendwie" mit dem genialen (?)FireMonkey aufs Smartboard portieren wollte, war ich maßlos enttäuscht, dass so simple, wie wichtige Standardroutinen nicht ebenso simpel funtionieren.
Was bedeutet z.B. die Kreation von TImage oder TPanel? Der Objektinspektor ist völlig verödet. Wo steht, wie ein Bild importiert werden kann? Nach welchem Schema kann ich das gezielt suchen?
Ganz wichtig wäre (wohl nicht nur für mich) die individuelle Änderung der Schrift- oder Hintergrundfarbe in Panels. Fehlanzeige.
Ist das für Programmierprofis kein Thema? Was bietet Embarcadero für Lösungen an?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 12. Jun 2015, 09:50
Die Lösung heißt: Schau in die Dokumentation!

FMX ist völlig anders als VCL und erfordert daher auch ein Einarbeiten in dieses neue und andere Framework.

Spezielle Darstellungen werden dort nun per Styles vorgenommen und statt einem Panel nimmt man ein Layout/Rectangle/Frame/etc.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.343 Beiträge
 
Delphi 12 Athens
 
#3

AW: Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 12. Jun 2015, 10:23
Jupp, Rahmen weg vom TPanel, geht nicht. Dafür gibt TLayout.
(leider hat man vergessen TLayout und Co. auch in der VCL zur Verfügung zu stellen)

Auch andere Komponenten gibt es doppelt. So gibt es z.B. eine ScrollBox jeweils mit und ohne Rahmen, anstatt dort einfach nur zwei Styles zur Verfügung zu stellen.

Hintergrundfarben und Co. sind halt auch nicht so leicht.
Aber man kann sich für eine Komponente (z.B. TEdit) einen CustomStyle erstellen lassen, dort in den Hintergrund ein TRectangle einfügen,
diesen Style eventuell noch den gewünschten Edits zuweisen, falls man nicht "Alle" oder "nur Dieses" meint.
Und wenn jetzt kann man über das TRectangle die Hintergrundfarbe es TEdits bestimmen.

In OnPaint/OnPainting einfach Canvas.Brush.Color zuzuweisen geht auch nicht, so wie man es vielerorts aus der VCL kannte.
Find ich zwar auch ein bissl umständlich und blöd, aber so isses nunmal.

Der StyleEditor scheint ein paar macken zu haben. z.B. konnte ich oftmals erstellte Komponenten nicht wieder löschen, ohne gleich den ganzen Style zu löschen und alles neu zu machen.
Und da der Style auch noch binär in der DFM steht, kann man das Eine auch nicht einfach manuell entfernen.
Oder beim Umstellen des Align bekommen das die 8 Selektion-Pünktchen nicht mit ... erst wenn man sie anklickt.


Im Formdesigner fehlen die netten Ausrichtungshilfslinien.
Bei FMX darfst du also vergessen und komplett neu anfangen. Aber sei froh, daß du nicht auch schon FMX v1 und FMX v2 gelernt hast, denn zwischendurch wurde viel daran umgebaut.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Jun 2015 um 10:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 12. Jun 2015, 10:32
In OnPaint/OnPainting einfach Canvas.Brush.Color zuzuweisen geht auch nicht, so wie man es vielerorts aus der VCL kannte.
Find ich zwar auch ein bissl umständlich und blöd, aber so isses nunmal.
Na zum glück... Firemonkey funktioniert halt ganz anders... Wäre ja auch fatal, wenn die GPU beim Rendern erst mal eine CPU Routine aufrufen müsste um eine Farbe zu ermitteln. Besondern, wenn da noch ein Filter usw. drüber liegen würde...
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 12. Jun 2015, 11:18
Jupp, Rahmen weg vom TPanel, geht nicht. Dafür gibt TLayout.
Das stimmt so nicht. Man kann auch für das TPanel einen benutzerdefinierten Stil anlegen, wo man für den Panelstyle die "Stroke" Eigenschaft auf "None" setzt, dann hat das TPanel keinen Rahmen.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 12. Jun 2015, 11:39
In OnPaint/OnPainting einfach Canvas.Brush.Color zuzuweisen geht auch nicht, so wie man es vielerorts aus der VCL kannte.
Find ich zwar auch ein bissl umständlich und blöd, aber so isses nunmal.
Auch hierzu muss man ergänzen, dass es zwar nicht über Canvas.brush.color geht, aber eben z.B. so:

Delphi-Quellcode:
procedure TForm14.Panel1Paint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  canvas.BeginScene;
  canvas.Fill.Kind := TBrushKind.bkSolid;
  Canvas.Clearrect (Arect, TAlphaColorRec.Yellow);
  canvas.EndScene;
end;
Das zeichnet das Panel in Gelb, egal was man für einen Stil zugewiesen hat. Allerdings muss man dann auch alles andere, was sich im Panel befindet, selber zeichnen, für das TPanel dann vielleicht nicht so sinnvoll. Aber hilfreich zu wissen, wenn man z.B. in einem Listbox-Item eine andere Hintergrundfarbe benötigt, oder gleich mehrere unterschiedliche Hintergrundfarben innerhalb des gleichen ListBoxItems.

Generell ist es möglich, mit dem FMX-Canvas wie zu VCL-Zeiten zu arbeiten. Wo FMX gewisse Einschränkungen hat, zeichne ich das eine oder andere eben selber über den Canvas (z.B. bei mehreren TString-Columns in einem StringGrid, die unterschiedliche Ausrichtungen haben (also Links,- rechtsbündig oder zentriert)).

Insgesamt finde ich es aber als Erleichterung, das nicht mehr tun zu müssen (über den Canvas arbeiten). Unter der VCL habe ich fast alle Grids oder Listboxen per Ownerdraw gezeichnet, unter FMX benötige ich das fast nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
779 Beiträge
 
#7

AW: Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 13. Jun 2015, 14:49
Delphi-Quellcode:
procedure TForm14.Panel1Paint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  canvas.BeginScene;
  canvas.Fill.Kind := TBrushKind.bkSolid;
  Canvas.Clearrect (Arect, TAlphaColorRec.Yellow);
  canvas.EndScene;
end;
Das zeichnet das Panel in Gelb, egal was man für einen Stil zugewiesen hat. Allerdings muss man dann auch alles andere, was sich im Panel befindet, selber zeichnen, für das TPanel dann vielleicht nicht so sinnvoll. Aber hilfreich zu wissen, wenn man z.B. in einem Listbox-Item eine andere Hintergrundfarbe benötigt, oder gleich mehrere unterschiedliche Hintergrundfarben innerhalb des gleichen ListBoxItems.
Hinweis und Zusatzfrage:

Man kann ja auch mit FindStyleResource('...') sich ein (Fmx-)Objekt aus dem Style holen und dann dort Farbe etc. setzen - funktioniert auch soweit. Bei TPanel ist es allerdings so, dass der Style nur aus einem TRectangle besteht und obige Funktion findet dieses Objekt (panelstyle) nicht, da es scheinbar nur in Unterobjekten sucht. An den Panelstyle (oberstes Objekt) kommt man zwar auch mittels TStyledControl.FResourceLink heran, aber da dieses protected ist, muss man sich eine Klasse ableiten, die dies veröffentlicht und dann einen harten Typecast machen. Funktioniert; aber ist das so gewollt oder gibt es eine andere/bessere Möglichkeit?
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 13. Jun 2015, 17:47
Eine andere / bessere Variante, um an den Original-Panelstyle ranzukommen, kenne ich auch nicht. Wenn man sich mal die FindStyleRessource-Implementierung ansieht, bin ich mir gar nicht so sicher, ob das evtl. ein Fehler ist, die Style-Ressource hier in diesem Falle nicht zurückzuliefern..

Aber statt hier mit Hacks zu arbeiten, kann man sich auch einfach eine 2. StyleRessource erstellen (mit den notwendigen Abweichungen) und dann dem Object (also hier dem Panel) einfach diesen Style (Eigenschaft StyleLookup) zuweisen (also z.B. ein PanelStyleRed, ein PanelStyleBlue).
  Mit Zitat antworten Zitat
Sel2012

Registriert seit: 6. Jun 2015
Ort: 31535
103 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 13. Jun 2015, 20:31
[QUOTE=Harry Stahl;1304932]

Delphi-Quellcode:
procedure TForm14.Panel1Paint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  canvas.BeginScene;
  canvas.Fill.Kind := TBrushKind.bkSolid;
  Canvas.Clearrect (Arect, TAlphaColorRec.Yellow);
  canvas.EndScene;
end;
Es ist, als würde ich bei Null anfangen. Beim <Ausführen> klemmt's (ohne Fehlermeldung).
Auslöser der Aktion soll Button1 sein (Procedure Button1Click). Panel1 wurde aus der Tool-Palette kreiert.
Wer erkennt wo, dass es sich um Panel1 handelt?
Panel1.canvas. nützt nix.
Das ist so ein Beispiel, dass nur den Schluss zulässt, dass Dummis hier nichts zu suchen haben. Aber wer hilft angemessen,d.h. ausreichend ausführlich?

Danke für die Geduld.
  Mit Zitat antworten Zitat
Sel2012

Registriert seit: 6. Jun 2015
Ort: 31535
103 Beiträge
 
Delphi XE5 Professional
 
#10

AW: Enttäuschung: Kein Image,Panel, individueller Farbumschag bei FontColor und Panel

  Alt 14. Jun 2015, 14:27
[QUOTE=Harry Stahl;1304932]
Delphi-Quellcode:
procedure TForm14.Panel1Paint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  canvas.BeginScene;
  canvas.Fill.Kind := TBrushKind.bkSolid;
  Canvas.Clearrect (Arect, TAlphaColorRec.Yellow);
  canvas.EndScene;
end;
Das zeichnet das Panel in Gelb,...
Es geht auch ganz simpel(siehe Anhang) Anfängerglück (?):
Aus der Ruhelage (Blau) werden über Button1 oder Button2 andere Farben gewählt. Das klappt ganz stabil. Die Zuordnung / Farbwahl findet über <if> statt.
Ich wüsste aber gern den Code für den Aufruf von
procedure TForm2.Panel1Paint(Sender: TObject; Canvas: TCanvas;const ARect: TRectF);
direkt über z.B. Button1Click.
Angehängte Grafiken
Dateityp: jpg canvas.jpg (33,2 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 22:34 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