PBToolboxAI v1 ← Site

picture — u_pbt_picture #

← Komponentenreferenz · Inhalt des Handbuchs

Bildanzeige: alle gängigen Formate, Zuschnittmodi, Ausrichtung, automatische Graustufendarstellung und Zähler-Plakette.

Live ansehen — Demoanwendung, Kachel Picture: die Vorschau, der zugehörige Code und diese Seite, nebeneinander.


Auf einen Blick #

Userobjectu_pbt_picture
Item-Klasse— (Komponente ohne Items)
WofürEin PowerBuilder-picture ersetzen: moderne Formate (SVG, WebP, animiertes GIF), beherrschter Zuschnitt, anklickbares Bild, automatische Graustufendarstellung
Opt-in-Optionenib_track_mouse

Schnellstart #

// open-Event des Fensters
uo_image.is_source  = "img\logo.png"
uo_image.is_stretch = uo_image.STRETCH_UNIFORM   // passt an, ohne zu verzerren
uo_image.is_align   = uo_image.ALIGN_CENTER
uo_image.is_tooltip = "Logo der Firma"

Woher das Bild kommt: is_source #

is_source akzeptiert vier Formen, die alle austauschbar sind:

FormBeispielVerwendung
Lokale Dateiimg\logo.pngpng, jpg, bmp, gif, ico, svg, webp
Webadressehttps://…/logo.pngVon einem Server geladenes Bild (http oder https)
Eingebettete Datendata:image/png;base64,…Bereits im Speicher vorliegendes Bild, ohne Zwischendatei
DLL-Ressourceimg\packimages.dll:SAMPLEIn einer Ressourcen-DLL verpacktes Bild

Einem GIF kann das Präfix anim: vorangestellt werden, um eine Animation ausdrücklich zu kennzeichnen (GIFs werden ohnehin animiert).

Wenn derselbe Name in einer DLL unter mehreren Ressourcentypen vorkommt, geben Sie den Typ an: img\packimages.dll:PNG/SAMPLE, SVG/SAMPLE, ICON/APP, RCDATA/BLOB. Siehe Bilder und Symbole für die Präfixe mono: und tint:, die ein Glyph passend zum Design umfärben.


Wie es zugeschnitten wird: is_stretch #

KonstanteWirkung
STRETCH_UNIFORMStandard. Das Bild wird ohne Verzerrung skaliert und bleibt vollständig sichtbar; es können Ränder entstehen
STRETCH_UNIFORMTOFILLOhne Verzerrung skaliert, aber der Rahmen wird vollständig gefüllt; Überstände werden beschnitten
STRETCH_FILLDas Bild wird gedehnt, bis es genau den Rahmen ausfüllt — es kann verzerrt werden
STRETCH_NONEUrsprungsgröße, ohne Skalierung

is_align bestimmt die waagerechte Lage des Bildes, wenn es kleiner als das Steuerelement ist: ALIGN_CENTER (Standard), ALIGN_START, ALIGN_END. Die senkrechte Achse hat ihre eigene Eigenschaft, is_valign.


Konstanten #

KonstanteWertFür
STRETCH_NONE · STRETCH_FILL · STRETCH_UNIFORM · STRETCH_UNIFORMTOFILL"none" "fill" "uniform" "uniformtofill"is_stretch
ALIGN_CENTER · ALIGN_START · ALIGN_END"center" "start" "end"is_align
VALIGN_TOP · VALIGN_CENTER · VALIGN_BOTTOM"top" "center" "bottom"is_valign
is_valignstringVALIGN_CENTERSenkrechte Platzierung, wenn das Bild kleiner als das Steuerelement ist: VALIGN_TOP, VALIGN_CENTER, VALIGN_BOTTOM. Die beiden Achsen sind unabhängig — is_align gibt die Spalte, diese die Zeile — und genau das macht eine Ecke erreichbar
ROTATION_NONE · ROTATION_90 · ROTATION_180 · ROTATION_2700 90 180 270ii_rotation

ALIGN_START und ALIGN_END sind logisch: Sie folgen der Schreibrichtung (Sprache und RTL). Die physischen Werte left und right werden weiterhin als Aliasnamen akzeptiert.


Eigenschaften #

EigenschaftTypStandardZweck
is_sourcestring""Das anzuzeigende Bild (siehe die vier Formen oben)
is_stretchstring"uniform"Zuschnittmodus: STRETCH_NONE, STRETCH_FILL, STRETCH_UNIFORM, STRETCH_UNIFORMTOFILL
is_alignstring"center"Horizontale Platzierung, wenn das Bild kleiner als das Steuerelement ist: ALIGN_CENTER, ALIGN_START, ALIGN_END. Die vertikale Achse ist is_valign
ib_enabledbooleantrueBei false wird das Bild in Graustufen angezeigt
ii_badgeinteger0Zähler-Plakette in der oberen rechten Ecke (0 = keine)
il_badge_colorlong0Hintergrund der Plakette, als PowerBuilder-RGB (0 = die Farbe aus dem Design). Die Textfarbe wird automatisch gewählt, damit der Zähler lesbar bleibt
ii_badge_sizeinteger0Höhe der Plakette in Pixeln (0 = die Größe aus dem Design). Die Schriftgröße folgt von selbst: der Zähler bleibt bei jeder Größe zentriert
ib_track_mousebooleanfalseOpt-in: aktiviert ue_mouse_enter / ue_mouse_leave
is_placeholderstring""Platzhalterbild, angezeigt solange is_source leer ist (ein Rahmen « Foto hinzufügen », eine Silhouette). Gedämpft dargestellt: ein Platzhalter ist nicht der Inhalt und wird nie als geladenes Bild gemeldet. Akzeptiert das Präfix mono:, das ein einfarbiges Zeichen mit dem Design einfärbt
is_error_sourcestring""Ersatzbild, wenn die Quelle beim Laden fehlschlägt. Lassen Sie es leer, und die Komponente zeigt ihr eigenes Fehlerzeichen — nie ein leeres Feld, das dem Benutzer nichts sagt, während ue_error nur zu Ihrem Code gelangt. Akzeptiert das Präfix mono:
ii_rotationinteger0Vierteldrehungen, für Scans und Fotos, die liegend ankommen: ROTATION_NONE, ROTATION_90, ROTATION_180, ROTATION_270 (jeder andere Wert gilt als 0). Eine Vierteldrehung tauscht auch die Einpassachsen, damit das Bild seine Proportionen behält, statt gequetscht zu werden
ib_mirrorbooleanfalseWaagerechte Spiegelung, über der Drehung angewendet
ib_zoomablebooleanfalseOpt-in: Der Benutzer darf heranzoomen (Mausrad), sich bewegen (Ziehen) und zur Einpassung zurückkehren (Doppelklick). Für einen Plan, einen Scan, ein Foto — wo vier feste Einpassmodi nicht genügen
id_zoomdouble1.0Zoomfaktor: 1.0 = das ganze Bild passt, bis 8.0. Zurückgelesen liefert er den aktuellen Faktor, das Rad eingeschlossen (ue_zoom_changed meldet jede Stufe). Erfordert ib_zoomable
ib_allow_dropbooleanfalseOpt-in: nimmt aus dem Windows-Explorer abgelegte Dateien an. Der Rahmen zeigt die Bereitschaft, und die vollständigen Pfade kommen über ue_drop_files — sie in is_source zu laden bleibt Ihrer Anwendung überlassen
ib_auto_heightbooleanfalseOpt-in: Das Userobject nimmt die Höhe an, die die Proportionen des Bildes bei seiner aktuellen Breite wahrt. Für ein Bild ist diese Höhe ableitbar: Sie müssen sie nicht selbst aus den von ue_loaded gemeldeten Maßen berechnen
is_theme_stylestringfluentVisueller Stil der Komponente (Konstanten THEME_STYLE_*)
is_theme_modestringlightHelle oder dunkle Variante (Konstanten THEME_MODE_*)
il_theme_accentlong-1Akzentfarbe dieser Komponente (-1 = Akzent des Designs)
is_tooltipstring""Einfacher Tooltip beim Überfahren der Komponente
is_super_tooltip_titlestring""Titel des erweiterten Tooltips (hat Vorrang vor is_tooltip)
is_super_tooltip_textstring""Text des erweiterten Tooltips (Rich-Markup zulässig)
is_super_tooltip_imagestring""Bild des erweiterten Tooltips

Methoden #

MethodeZweck
of_reset ( )Setzt alle Eigenschaften auf ihren Standard zurück und entfernt das Bild
of_set_redraw (boolean)Fasst eine Folge von Änderungen zu einer einzigen Darstellung zusammen
of_save_as_png (string) · of_save_as_jpg (string)Exportiert die Darstellung als Bild

Events #

EventAusgelöst wenn
ue_clicked ( )Linksklick auf das Bild
ue_loaded (long al_width, long al_height)Das Bild ist geladen; die Parameter tragen seine ursprünglichen Maße in Pixeln
ue_error (string as_message)Das Bild konnte nicht geladen werden (fehlende Datei, nicht erreichbare Adresse, abgelehntes Format)
ue_rclicked ( )Rechtsklick auf das Bild
ue_double_clicked ( )Doppelklick auf das Bild. Die vorausgehenden Einfachklicks werden ebenfalls ausgelöst, in derselben Reihenfolge. Ist ib_zoomable aktiv, führt der Doppelklick außerdem zur Einpassung zurück: das Ereignis wird in beiden Fällen ausgelöst, seine Bedeutung bestimmen Sie
ue_zoom_changed (double ad_zoom)Der Zoomfaktor hat sich geändert, per Mausrad wie per id_zoom. 1.0 heißt, dass das ganze Bild wieder passt
ue_auto_height (long al_height)Die Komponente hat sich auf eine neue Höhe festgelegt; das Userobject ist beim Auslösen bereits angepasst. Erfordert ib_auto_height
ue_drop_files (string as_files[])Aus dem Explorer abgelegte Dateien: vollständige Pfade, ein Eintrag je Datei. Erfordert ib_allow_drop
ue_drag_enter ( )Ein Dateiziehen hat die Komponente erreicht (ib_allow_drop)
ue_drag_leave ( )Das Dateiziehen hat die Komponente verlassen
ue_mouse_enter ( )Die Maus tritt ein — erfordert ib_track_mouse = true
ue_mouse_leave ( )Die Maus verlässt den Bereich — erfordert ib_track_mouse = true
ue_ready ( )Die Komponente ist fertig geladen; alles zuvor Gesendete wurde nachgespielt
ue_runtime_missing ( )Die WebView2-Runtime fehlt: die Komponente bleibt leer
ue_bg_color (long al_color)Die Komponente hat ihre Design-Hintergrundfarbe berechnet; das Userobject hat sie bereits übernommen (backcolor)

Beispiele #

Das Foto eines Datensatzes anzeigen #

// Event ue_row_changed der DataWindow : das Foto des aktuellen Kunden anzeigen
uo_photo.is_source  = "photos\" + ls_code_client + ".jpg"
uo_photo.is_stretch = uo_photo.STRETCH_UNIFORMTOFILL   // fuellt den Rahmen, der Ueberstand wird beschnitten
uo_photo.is_align   = uo_photo.ALIGN_CENTER
// Event ue_error von uo_photo : (string as_message)
uo_photo.is_source = "img\photo_absente.svg"     // Ersatzbild

ue_error zu behandeln ist der richtige Weg, um mit einem fehlenden Foto umzugehen: Es ist unnötig, vor der Zuweisung zu prüfen, ob die Datei vorhanden ist.

Ein anklickbares Bild, wie eine Schaltfläche #

uo_avatar.is_source    = "photos\utilisateur.png"
uo_avatar.is_tooltip   = "Mein Konto"
// Event ue_clicked von uo_avatar
of_ouvrir_mon_compte()

Zähler und Graustufendarstellung #

// Eine Benachrichtigungs-Plakette auf einem E-Mail-Symbol
uo_messagerie.is_source = "img\packimages.dll:SVG/MAIL"
uo_messagerie.ii_badge  = ll_non_lus       // 0 laesst die Plakette verschwinden

// Rote Plakette oberhalb einer Schwelle, sonst die Farbe des Designs (0)
if ll_non_lus > 20 then
    uo_messagerie.il_badge_color = RGB(200, 30, 30)
else
    uo_messagerie.il_badge_color = 0
end if

// Funktion nicht verfuegbar : das Bild wechselt in Graustufen, ohne zweites Bild
uo_messagerie.ib_enabled = ib_droit_messagerie

Die Graustufendarstellung wird automatisch berechnet: Sie müssen kein zweites, „deaktiviertes“ Bild bereitstellen.

Die tatsächlichen Maße des Bildes erfahren #

uo_apercu.is_source = ls_fichier_choisi
// Event ue_loaded von uo_apercu : (long al_width, long al_height)
uo_statut.of_item("main").is_text = String(al_width) + " x " + String(al_height) + " px"

// Ein Bild, das kleiner als der Rahmen ist : nicht unnoetig vergroessern
if al_width < uo_apercu.width and al_height < uo_apercu.height then
    uo_apercu.is_stretch = uo_apercu.STRETCH_NONE
end if

Ein Banner über die gesamte Breite #

uo_banniere.is_source  = "img\banniere.jpg"
uo_banniere.is_stretch = uo_banniere.STRETCH_UNIFORMTOFILL   // fuellt die ganze Bahn, ohne zu verzerren
uo_banniere.is_valign   = uo_banniere.VALIGN_TOP               // haelt den oberen Teil des Bildes sichtbar

Best Practices #


← Komponentenreferenz · Inhalt des Handbuchs