Suche Statusbar, ähnlich Progressbar [erledigt]

Rund um die LCL und andere Komponenten
Antworten
Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Suche Statusbar, ähnlich Progressbar [erledigt]

Beitrag von Michl »

Moin,

kennt jemand eine fertige Komponente, mit der man einen Status ähnlich einer Progressbar darstellen kann? Ich meine sowas in der Art (schnell per Gimp erstellt):
Dateianhänge
Statusbar.png
Statusbar.png (1.19 KiB) 1566 mal betrachtet
Zuletzt geändert von Michl am Do 25. Aug 2022, 08:47, insgesamt 1-mal geändert.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

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

Re: Suche Statusbar, ähnlich Progressbar

Beitrag von sstvmaster »

Hast du schon mal bei Eye-Candy Controls nachgeschaut ob was für dich dabei ist?

https://wiki.freepascal.org/Eye-Candy_Controls

Download via OPM in Lazarus.
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)

wp_xyz
Beiträge: 4892
Registriert: Fr 8. Apr 2011, 09:01

Re: Suche Statusbar, ähnlich Progressbar

Beitrag von wp_xyz »

Ich weiß nicht, ist es das wert, sich in die Abhängigkeit von Fremdkomponenten zu begeben? Basierend auf einer TPaintBox und in einen Frame gepackt, müsste das doch mit ein paar Zeilen Code zu erledigen sein.

Benutzeravatar
six1
Beiträge: 788
Registriert: Do 1. Jul 2010, 19:01

Re: Suche Statusbar, ähnlich Progressbar

Beitrag von six1 »

ich habe so Dinge auch schon einfach auf die Canvas eines Panel gezeichnet.
Gruß, Michael

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Suche Statusbar, ähnlich Progressbar

Beitrag von Michl »

sstvmaster hat geschrieben:
Mi 24. Aug 2022, 22:26
Hast du schon mal bei Eye-Candy Controls nachgeschaut ob was für dich dabei ist?
Wenn ich mir die Images so anschaue, wird immer alles von links weg gezeichnet. Hilft mir leider nicht, danke trotzdem.
wp_xyz hat geschrieben:
Do 25. Aug 2022, 01:07
Ich weiß nicht, ist es das wert, sich in die Abhängigkeit von Fremdkomponenten zu begeben?
Da es nur ein kleines privates Projekt für einen Bekannten ist, wäre das mir egal. Es sollte nur schnellst möglich erledigt sein.

OK, dann zeichne ich diese selbst. Danke an alle fürs mitdenken. Hätte ja sein können, daß ich es einfach hätte zusammenklicken können. :wink:

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
six1
Beiträge: 788
Registriert: Do 1. Jul 2010, 19:01

Re: Suche Statusbar, ähnlich Progressbar [erledigt]

Beitrag von six1 »

Mit Shapes kann man bisschen abkürzen; muss man nur Größe und Position festlegen.
Im einfachsten Fall ein TPanel und ein TShape
Gruß, Michael

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: Suche Statusbar, ähnlich Progressbar [erledigt]

Beitrag von gladio »

In den RX-Komponenten ist sowas dabei.
Vielleicht taugt das für deine Zwecke.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Suche Statusbar, ähnlich Progressbar [erledigt]

Beitrag von Michl »

gladio hat geschrieben:
Do 25. Aug 2022, 13:39
In den RX-Komponenten ist sowas dabei.
Vielleicht taugt das für deine Zwecke.
Habe mir das Package installiert, konnte da aber sowas in der Art nicht entdecken. Keine Ahnung.

Wenn es jemand mal braucht, ich habe das jetzt selbst umgesetzt und meinen Komponenten zugefügt, zu finden per SVN https://svn.code.sf.net/p/michlpackages ... hlcontrols:

Code: Alles auswählen

procedure TTrendBar.Paint;
var
  LSize: Integer;
begin
  inherited Paint;
  Canvas.Brush.Color := ClientColor;
  Canvas.FillRect(1, 2, Width - 1, Height - 2);

  Canvas.Brush.Color := BorderColor;
  Canvas.FrameRect(0, 1, Width, Height - 1);
  Canvas.Pen.Color := BorderColor;
  Canvas.Line(Width div 2, 0, Width div 2, Height);

  if Value > 0 then
  begin
    Canvas.Brush.Color := ValuePositiveColor;
    LSize := Min(Width - Width Div 2 - 4, Trunc(Value / 200 * (Width - 4)));
    Canvas.FillRect(Width div 2 + 1, 4, Width div 2 + 1 + LSize, Height - 4);
  end
  else if Value < 0 then begin
    Canvas.Brush.Color := ValueNegativeColor;
    LSize := Max(3, Width div 2 + Trunc(Value / 200 * (Width - 4)));
    Canvas.FillRect(LSize, 4, Width div 2, Height - 4);
  end;
end;
Sieht dann hier so aus:
Dateianhänge
Bsp.png
Bsp.png (4.86 KiB) 1415 mal betrachtet

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten