Naja, der Quellcode ist nicht groß, eigentlich gibt es gar keinen
// zur Entwicklungszeit (im Objektinspektor gesetzt)
Y.MainMenu.Images = X.ImageList
Dann habe ich eine Projektdatei mit dem eigentlichen Projekt und zwei Sprachen. Wenn ich die Sprachdateien (z.B .enu) mitbenutze (dies mach ich wie folgt), dann gibt es das beschriebene Problem, daß zur Laufzeit die Icons einfach nicht angezeigt werden.
Danke, Jakob
Delphi-Quelltext
1: 2:
| if LoadNewResourceModule(English) <> 0 then ReinitializeForms; |
Hier noch die Funktion (funktioniert eigentlich bisher tadellos)
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| function LoadNewResourceModule(Locale: LCID): LongInt; var FileName: array [0..260] of char; P: PChar; LocaleName: array[0..4] of Char; NewInst: LongInt;
begin GetModuleFileName(HInstance, FileName, SizeOf(FileName)); GetLocaleInfo(Locale, LOCALE_SABBREVLANGNAME, LocaleName, SizeOf(LocaleName)); P := PChar(@FileName) + lstrlen(FileName); while (P^ <> '.') and (P <> @FileName) do Dec(P); NewInst := 0; Result := 0; if P <> @FileName then begin Inc(P); if LocaleName[0] <> #0 then begin lstrcpy(P, LocaleName); NewInst := LoadLibraryEx(FileName, 0, LOAD_LIBRARY_AS_DATAFILE); if NewInst = 0 then begin LocaleName[2] := #0; lstrcpy(P, LocaleName); NewInst := LoadLibraryEx(FileName, 0, LOAD_LIBRARY_AS_DATAFILE); end; end; end; if NewInst <> 0 then Result := SetResourceHInstance(NewInst) end;
procedure ReinitializeForms; var Count: Integer; I: Integer; Form: TForm;
begin Count := Screen.FormCount; for I := 0 to Count-1 do begin Form := Screen.Forms[I]; ReloadInheritedComponent(Form, TForm); end; end; |