ich hab mir jetzt aus dem TGTKWidget eine Funktion gebastelt, mit der ich GNOME-Icons laden kann (das funktioniert auch).
Jetzt möchte ich daraus eine einzelne Unit bauen, die alle benötigten Typen aus anderen Units erneut veröffentlicht, damit ich in anderen Units nur eine einzige anstatt fünf Stück einbinden muss.
Code: Alles auswählen
unit ugtkimage;
{$mode objfpc}{$H+}
interface
uses
Graphics,
GTKDef, GTKProc, gtk2, GTKInt, gdk2pixbuf, gdk2,
LCLIntf, LCLType, InterfaceBase;
type
TLazGtkStyle = GtkDef.TLazGtkStyle;
TGtkIconSize = gtk2.TGtkIconSize;
const
GTK_ICON_SIZE_INVALID = gtk2.GTK_ICON_SIZE_INVALID;
(* weitere icon_size-Konstanten aus gtk2 *)
GTK_STOCK_DIALOG_INFO = gtk2.GTK_STOCK_DIALOG_INFO;
(* weitere stock-icon-Konstanten aus gtk2 *)
function LoadGTKIcon(const ImgName: String; ImgStyle: TLazGtkStyle;
ImgSize: TGtkIconSize; Target: TCustomBitmap): Boolean;
implementation
(* ... *)
end.
Code: Alles auswählen
ugtkimage.pas(13,18) Hint: Type "TLazGtkStyle" redefinition
ugtkimage.pas(15,18) Hint: Type "TGtkIconSize" redefinition
notsaveddlg.pas(77,40) Error: Identifier not found "lgsButton"
Meine Frage wäre jetzt, wie ich einen neuen Bezeichner für einen bestehenden Type einführen kann (möglichst des gleichen Namens) und das ganz dann auch noch funktioniert. Wie gesagt, mein Ziel ist es alle benötigten Konstanten/Typen in einer neuen Unit neu zu deklarieren (als Referenz auf das Original), sodass die Typensicherheit gewährt bleibt (d.h. ugtkimage.TLazGtkStyle = GtkDef.TLazGtkStyle) und ich nur eine Unit einbinden muss (alternativ sind es genau drei Units).
Soviel ich weiß, wird sowas auch in der Unit SysUtils (THandle) benutzt.
MfG Socke
[Edit]
Ich hab mittlerweile eine bessere Möglichkeit gefunden, die (im Gegensatz zu dem Code aus dem GTKWidgetset) alle GNOME-Icons laden kann (und davon dann auch noch aus dem SVG-Bild). Dazu brauch ich höchstens nur noch die GTk_STOCK-IDs, welche aber bisher keine Probleme bereiteten.