TImage.BorderSpacing Farbe ändern

Rund um die LCL und andere Komponenten
Antworten
MmVisual
Beiträge: 1150
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

TImage.BorderSpacing Farbe ändern

Beitrag von MmVisual »

Hallo,

Ich möchte für eine Bildergallerie viele TImage in einem TFlowPanel anzeigen. Damit das ganze schöner aussieht nutze ich TImage.BorderSpacing.Left/Right/Top/Bottom mit ein paar Pixel um einen Abstand zueinander zu bekommen.

Soweit sieht das gut aus.

Nun möchte ich dass das Bild das angewählt ist hervorgehoben wird, dazu wollte ich in dem TImage die Farbe vom BorderSpacing ändern. Leider gibt es keine TImage.BorderSpacing.Color Eigenschaft.
Oder gibt es die doch und muss die wo anders setzen?

Dankeschön für die Hilfe, Grüße Markus.

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

Re: TImage.BorderSpacing Farbe ändern

Beitrag von Michl »

Borderspacing.Around ist Platz zwischen dem und anderen Controls. Die Farbe könnte im Parent.Paint geändert werden.

Einfacher: Setz ein rechteckiges TShape genau über das TImage (zuzüglich Borderspacing.Around) und stelle Brush.Style auf bsClear und Pen.Width auf Image.Borderspacing.Around.

Code: Alles auswählen

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

Timm Thaler
Beiträge: 1144
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: TImage.BorderSpacing Farbe ändern

Beitrag von Timm Thaler »

Michl hat geschrieben:Setz ein rechteckiges TShape genau über das TImage...


Bist Du sicher, dass das eine gute Idee ist? Als ich Ähnliches letztens mit einem TPaint versucht habe, gab es Probleme mit OnPaint Messages und OnClick Events. Widgets für die das nicht explizit vorgesehen ist (Panel, Container) sollte man nicht übereinanderlegen.

MmVisual
Beiträge: 1150
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

Re: TImage.BorderSpacing Farbe ändern

Beitrag von MmVisual »

Michl, das geht nicht so einfach.

TImage.Parent := TShape; <<< Fehler TShape ist kein TWinControl
Abgesehen davon gehen alle Klick Ereignisse dann nicht mehr in das TImage.

Anders herum ist eigentlich besser:
TShape.Parent := TImage; <<< Fehler TShape ist kein TWinControl

Wenn ich in:
TImage.Parent := TFlowPanel
TShape.Parent := TFlowPanel
mache, dann sind beide nebeneinander.

Was ginge wäre noch:
TPanel.Parent := TFlowPanel << Anzeige im FlowPanel
TImage.Parent := TPanel << Image im Panel
Dann kann ich TPanel.Color ändern.

Schade, ich dachte das ginge etwas leichter.

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

Re: TImage.BorderSpacing Farbe ändern

Beitrag von wp_xyz »

Um warum packst du die Image-Komponenten nicht zuerst auf ein Panel (client-aligned), das du beliebig einfärben kannst, und das dann einen farbigen Rand lässt, wenn BorderSpacing.Around auf ein paar Pixel gesetzt wird? Und ins FlowPanel kommt halt nicht direkt das TImage, sondern das Panel mit dem Image.

Eine Alternative wäre auch theo's Thumbnail-Komponente. Ich weiß gerade den Link nicht, wird aber im Forum hier ein paar mal erwähnt.

Timm Thaler
Beiträge: 1144
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: TImage.BorderSpacing Farbe ändern

Beitrag von Timm Thaler »

Ich hab TPanels erzeugt und auf diese die TImages gesetzt, dann kann man die Farbe der Panels ändern.

MmVisual
Beiträge: 1150
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

Re: TImage.BorderSpacing Farbe ändern

Beitrag von MmVisual »

mache ich auch gerade...

Antworten