[Erledigt] type redefinition

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

[Erledigt] type redefinition

Beitrag von Socke »

Hallo,
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.
Beim kompilieren bekomme ich u.a. folgende Meldungen:

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"
lgsButton ist ein Element von gtk2.TLazGtkStyle.
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.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

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

Re: [Erledigt] type redefinition

Beitrag von pluto »

Kannst du uns diese Lösung vorstellen ?
MFG
Michael Springwald

Antworten