Erstmal sorry für die arg verspätete Antwort und vielen Dank für euren Input. Leider habe ich hier im Forum ständig Login- und Passwort-Probleme. Eigentlich hatte ich die gleich folgende Antwort direkt nach Uwes Post abgesetzt, aber die hatte es irgendwie zerhagelt und ich hatte seitdem keine Zeit mehr.
Alright, das ist jetzt peinlich 
Kurzfassung: Der Fehler lag gänzlich woanders und - was wichtiger ist - in meiner Verantwortung
Die Listen werden aus zwei Text-Dateien gelesen (je eine für die obere und die untere Box) und im Falle der unteren noch nach einigen Kriterien geprüft. Bei bestandener Prüfung wird das Element angezeigt, sonst halt nicht. Da ich seit der Umstellung ausschließlich Probleme im Zusammenhang mit High-DPI hatte, bin ich blöderweise betriebsblind geworden und habe übersehen, dass in dieser Prüfung der Name des Rechners auf Übereinstimmung mit einer (hart-codierten) Liste untersucht wird - ggf. schaut diese Prüfung auch, ob Delphi läuft
Delphi-Quellcode:
procedure LadenWebTools;
var User : string;
Delphi : boolean;
Data : TStringList;
i : integer;
const EntryLength : integer = 6;
begin
User := GetEnvironmentVariable('Computername');
Delphi := FindWindow('TAppBuilder', nil) <> 0;
Data := TStringList.Create;
Data.LoadFromFile('WebTools.txt');
i := 0;
SetLength(WebTools, 0);
While i <= Data.Count - 1 do
begin
SetLength(WebTools, Length(WebTools) + 1);
With WebTools[High(WebTools)] do
begin
Name := Data[i];
{ mehr Daten... }
Tag := Data[i + 4];
{ mehr Daten... }
Inc(i, EntryLength);
{ Eintrag wieder löschen, wenn
-- kein Icon gefunden
-- keine User Übereinstimmung
-- bei laufendem Delphi User ignorieren }
If (FileExists('WebTools\' + Name + '.png') = false) Or
( (Tag = 'Home') And (Delphi = false) And (User <> 'User_Home_1')
And (User <> 'User_Home_2')
And (User <> 'User_Home_n') ) Or
( (Tag = 'Work') And (Delphi = false) And (User <> 'User_Work' ) )
then SetLength(WebTools, Length(WebTools) - 1);
end;
end;
Data.Free
For i := 0 to High(WebTools) do
begin
WebTools[i].Panel := TPanel.Create(Self);
WebTools[i].Image := TImage.Create(Self);
WebTools[i].Text := TPanel.Create(Self);
WebTools[i].BtnOpen := TButton.Create(Self);
WebTools[i].BtnSearch := TButton.Create(Self);
{ Design... }
end;
end;