Thema: Delphi VertScrollBar

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

Re: VertScrollBar

  Alt 15. Sep 2009, 17:02
so auf die Schnelle fällt mir nur der direkte Weg ein

dafür müssen die Forms (DFMs) aber im Textformat gespeichert sein
Delphi-Quellcode:
var SL: TStringList;
begin
  SL := TStringList.Create;

  SL.LoadFromFile('form.dfm');
  if (SL.Count > 0) and (Pos('object ', SL[0]) > 0) then begin
    SL.Text := StringReplace(SL.Text, ': TScrollBox'#13#10,
      ': TScrollBox'#13#10'HorzScrollBar.Tracking = True'#13#10
      + 'VertScrollBar.Tracking = True'#13#10, [rfReplaceAll, rfIgnoreCase]);
    SL.SaveToFile('form.dfm');
  end;

  SL.Free;
end;
und falls schon Einiges gesetzt ist, dann sollte man vorher mal prüfen, ob ".Tracking" noch nicht vorhanden ist ... könnte sein, das Delphi keine mehrfachvorkommen mag oder nur die letzen/alten Werte nimmt
Delphi-Quellcode:
var SL: TStringList;
  Th, Tv, i: Integer;
begin
  SL := TStringList.Create;

  SL.LoadFromFile('form.dfm');
  if (SL.Count > 0) and (Pos('object ', SL[0]) > 0) then begin
    Th := -1;
    Tv := -1;
    for i := SL.Count - 1 downto 0 do begin
      if Pos(' end', SL[i]) > 0 then begin
        Th := -1;
        Tv := -1;
      end;
      if Pos('HorzScrollBar.Tracking = ', SL[i]) > 0 then Th := i;
      if Pos('VertScrollBar.Tracking = ', SL[i]) > 0 then Tv := i;
      if (Pos(' object ', SL[i]) > 0) and Pos(': TScrollBox', SL[i]) > 0 then begin
        if Th >= 0 then begin
          SL[Th] := 'HorzScrollBar.Tracking = True';
          Th := -1;
        end else SL.Insert(i + 1, 'HorzScrollBar.Tracking = True');
        if Tv >= 0 then begin
          SL[Tv] := 'VertScrollBar.Tracking = True';
          Tv := -1;
        end else SL.Insert(i + 1, 'VertScrollBar.Tracking = True');
      end;
    end;
    SL.SaveToFile('form.dfm');
  end;

  SL.Free;
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat