TGradButton gefällig?

Rund um die LCL und andere Komponenten
alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

hmmm seltsam das es plattformabhängig ist....
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich habe den Button jetzt auch mal Installiert. Eigentlich sieht er nicht schlecht aus, aber wie gesagt auch bei mir ist dieser Grafik Fehler aber nur in den Modus:rtRight

Ich habe Linux, KDE 4.0 oder Hörer(da bin ich mir jetzt nicht so sicher)
Lazarus 9.0.25

Edit01:
Ich habe mir mal deinen Soruce-Code angeschaut. Also hier mal einige Hinweise von mir:
01 - Die Methode Paint von TGradButton
Da erstellt du jedes mal ein TBitmap, mach das nur einmal... das ist unnötige Resorucen Verschwendung
Darüber gibst du die Variable wieder frei, das musst du eigentlich auch nur einmal machen beim erstellen und beim löschen der Komponente

02 - bei meinen letzten Test hatte CopyRect einige Fehler unter Linux aufjedenfall ob das immer noch so ist weiß ich nicht. Nimm lieber hier die Methode Draw oder bitblt
Dateianhänge
gradbutton.jpg
MFG
Michael Springwald

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Die neuerstellung des TBitmap habe ich gemacht weil wenn das Bitmap nur im Create und Destroy habe UND dann die größe des TBitmaps verändere ( zB im Designer ) bleibt die damalige größe, kp ob es schon in den Bugs aufgelistet ist aber aufjedenfall ist es zurzeit noch nötig

Ich nutze kein CopyRect weil ich weiß nicht wie ich da transparent "kopieren" kann also kopiere ich pixel für pixel auf ein neues TBitmap und ich glaube da liegt auch der Fehler

Kann es sein das unter Linux ein neues TCanvas nicht mit einer Farbe gefüllt wird? das könnte diese schönen Farben im Text ( xD ) erzeugen

Edit1:
Anscheinend geht es jetzt auch ohne neuerstellung des TBitmaps wird im nächsten Release dann weggemacht

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja so ist das. Unter Linux musst du manuel mit FillRect zuerst ein Canvas füllen. Sonst geht es nicht....
MFG
Michael Springwald

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Hey Leute

habe versucht euer Problem mit einem Cache beseitigen das jeder Hintergrund, Glyph, und Text erst generiert wird und danach gezeichnet wird

- Hintergründe - funktioniert
- Texte - müsste funktionieren
- Glyphen - funktioniert nicht mehr, warscheinlich weil ich ImageList nutze
und
der IDE BUG ist wieder da -.-*

Ich habe kA wie ich die beiden Fehler beseitigen kann -.-, vllt ist auch meine Logik falsch, hoffe ihr könnt mir helfen
Dateianhänge
gradbutton.rar
(84.62 KiB) 87-mal heruntergeladen

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

EugenE hat geschrieben:und
der IDE BUG ist wieder da -.-*


Du meinst den Bug mit der Versionierung?

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Ne das läuft ^^ , der Bug der die anderen Komponente im Design-Mode nicht zeichnet

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

So neuer Versuch für die Linux-Bugs hoffe es funktioniert jetzt :)
Dateianhänge
gradbutton.rar
(91.53 KiB) 84-mal heruntergeladen

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Die Geschwindigkeit ist gut, aber leider ist der Caption nicht mehr lesbar.
Im Anhang findest du ein Bild davon.
und haufenweise Hinweise in der Ausgabe hier sind mal einige:
csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading CheckGroup1:TCheckGr
oup csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading CheckGroup2:TCheckGr
oup csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading RadioGroup1:TRadioGr
oup csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading RadioGroup2:TRadioGr
oup csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading RadioGroup3:TRadioGr
oup csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading RadioGroup4:TRadioGr
oup csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading LabeledEdit1:TLabele
dEdit csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading :TGradButton csDesig
ning=False
GetAdjustment 085BB3E8=LCLWinapiWidget [FPr] LCLObject=B7AC4BB0=:TGradButton HandleAllocated>
[HINT] TWinControl.CreateWnd creating Handle during loading :TGradButton csDesig
ning=False
GetAdjustment 085C2118=LCLWinapiWidget [FPr] LCLObject=B7AC6340=:TGradButton HandleAllocated>
[HINT] TWinControl.CreateWnd creating Handle during loading :TGradButton csDesig
ning=False
GetAdjustment 085C6F98=LCLWinapiWidget [FPr] LCLObject=B7AC78C0=:TGradButton HandleAllocated>
[HINT] TWinControl.CreateWnd creating Handle during loading :TGradButton csDesig
ning=False
GetAdjustment 085C69F0=LCLWinapiWidget [FPr] LCLObject=B7AC8E40=:TGradButton HandleAllocated>
[HINT] TWinControl.CreateWnd creating Handle during loading :TGradButton csDesig
ning=False
GetAdjustment 085D1A70=LCLWinapiWidget [FPr] LCLObject=B7ACA3C0=:TGradButton HandleAllocated>
[HINT] TWinControl.CreateWnd creating Handle during loading :TGradButton csDesig
ning=False
GetAdjustment 085D7AB0=LCLWinapiWidget [FPr] LCLObject=B7ACBB10=:TGradButton HandleAllocated>
[HINT] TWinControl.CreateWnd creating Handle during loading :TGradButton csDesig
ning=False
GetAdjustment 085DC168=LCLWinapiWidget [FPr] LCLObject=B7ACD090=:TGradButton HandleAllocated>
[HINT] TWinControl.CreateWnd creating Handle during loading :TGradButton csDesig
ning=False
GetAdjustment 085E0820=LCLWinapiWidget [FPr] LCLObject=B7ACE610=:TGradButton HandleAllocated>

das sind noch ein paar mehr *G*
Dateianhänge
gradbutton1.jpg
gradbutton.jpg
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich habe eine Lösung für das Problem gefunden:

Code: Alles auswählen

procedure TRotatedText.SetText(Value: String);
var
   TextSize : TSize;
begin
    if FText <> Value then
    begin
       FText:=Value;
 
       TextSize := FBitmap.Canvas.TextExtent(FText);
 
       FBitmap.Width:=TextSize.cx;
       FBitmap.Height:=TextSize.cy;
       // Hierdran hat es gelegen
        FBitmap.Canvas.FillRect(0,0,FBitmap.Width,FBitmap.Height);
       FBitmap.Canvas.TextOut(0,0,FText);
 
       Inherited LoadBitmap(FBitmap);
    end;
end;

So hat es bei mir aufjedenfall geklappt !! Der Button ist jetzt schön schnell und Funktioniert auch soweit. Ich werde ihn mal weiter testen !

Edit01:

Code: Alles auswählen

und bei TRotatedGlyph auch nochmal:
procedure TRotatedGlyph.Update;
var
   TempBitmap : TBitmap;
begin
    TempBitmap := TBitmap.Create;
    TempBitmap.Width:=FNormalGlyph.Glyph.Width;
    TempBitmap.Height:=FNormalGlyph.Glyph.Height;
    // unter Linux ist das hier ganz wichtig.
    TempBitmap.Canvas.FillRect(0,0,TempBitmap.Width,TempBitmap.Height);
    FNormalGlyph.Draw(TempBitmap.Canvas,Rect(0,0,TempBitmap.Width,TempBitmap.Height),
      Point(0,0), FButtonState, false, 0);
 
    LoadBitmap(TempBitmap);
 
    TempBitmap.Free;
end;


habe ich erstmal ein Glyph ausgewählt kann ich es auch nicht mehr ändern.
MFG
Michael Springwald

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

ThX @ Pluto

Neue Version hochgeladen:

Version 1.4:
  • [ + ] - Caching Background, Rotated Text+Glyphs
  • [ + ] - Using TButtonGlyph
  • [ * ] - Using TRotateDirection instead of TRotatedText
  • [ * ] - using TButtonLayout to set the Glyph Position
  • [ ~ ] - Linux-Bugs

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Die aktuelle Version von TGradButton kann jetzt auch per von dem CCR-SVN geladen werden.



Viel Spaß damit :)

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: TGradButton gefällig?

Beitrag von Maik81SE »

wollte ihn mir auch gerade mal anschauen, da ich einige AnalogButton benödige und dies als Vorlage nutzen wollte, bzw zu schauen, wie du einige Aspekte gelöst hast, aber der Link scheint wohl eine Leiche zu sein.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: TGradButton gefällig?

Beitrag von sstvmaster »

LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: TGradButton gefällig?

Beitrag von Maik81SE »

sstvmaster hat geschrieben:
Mi 9. Dez 2020, 19:50
Guggst du hier: https://sourceforge.net/p/lazarus-ccr/s ... dcontrols/
danke und Grüße in meine Geburtsstadt

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Antworten