AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi SynEdit: Textfarbe an bestimmter Stelle herausfinden
Thema durchsuchen
Ansicht
Themen-Optionen

SynEdit: Textfarbe an bestimmter Stelle herausfinden

Ein Thema von derpepe · begonnen am 16. Mär 2005 · letzter Beitrag vom 17. Mär 2005
 
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#11

Re: SynEdit: Textfarbe an bestimmter Stelle herausfinden

  Alt 17. Mär 2005, 15:18
Die aktuelle Zeile kannst du farbig markieren, in dem du die Eigenschaft "ActiveLineColor" des SynEdit änderst.

Die roten Markierungen zeichnen ich selber auf das Canvas.

Zu dem Auslesen der Werte, hier mal eine Funktion, wird zwar nicht die beste sein, aber als Denksanstoss bestimmt geignet:
Delphi-Quellcode:
function GetItem(const AData: TStrings; const ARoom, AItem: String): String;
var
  i, j, k,
  fPos,
  fOpenStart: Integer;
  fLine: String;
  fFinish,
  fOpen: Boolean;
begin
  Result := '';
  //nach der Position des Raums suchen
  for i := 0 to AData.Count - 1 do
  begin
    if Pos(ARoom, AData[i]) > 0 then
      if Pos('Raum', AData[i]) = 1 then
      begin
        fPos := i;
        Break;
      end;
  end;
  //Attribut auslesen
  fFinish := False;
  fOpen := False;
  for i := fPos to AData.Count - 1 do
  begin
    if Pos(AItem, AData[i]) = 1 then
    begin
      fLine := AData[i];
      //Wert abtrennen
      for j := Pos(' ', fLine) to Length(fLine) do
      begin
        if fLine[j] <> ' then
        begin
          for k := j to Length(fLine) do
            Result := Result + fLine[k];
          Break;
        end;
      end;
      //prüfen, ob der String vollständig ist
      if Result[1] = '''then
      begin
        fOpen := True;
        fOpenStart := i;
        //Anführungszeichen entfernen
        Delete(Result, 1, 1);
      end else
        fFinish := True;
    end;
    if fOpen then
    begin
      if fOpenStart = i then
        Continue;
      fLine := AData[i];
      if fLine = 'then
        Continue;
      //Wert abtrennen
      for j := Pos(' ', fLine) to Length(fLine) do
      begin
        if fLine[j] <> ' then
        begin
          for k := j to Length(fLine) do
            Result := Result + fLine[k];
          Break;
        end;
      end;
      if Result[Length(Result)] = '''then
      begin
        fOpen := False;
        fFinish := True;
        Delete(Result, Length(Result), 1);
      end;
    end;
    if fFinish then
      Break;
  end;
Hier noch ein Beispiel zur Verwendung. Anstatt die Datei zu laden, kannst du als AData auch bspw. die Lines eines Memos oder so angeben, je nach dem was da auf dem Screenshot ist, weiß ja nicht wo du es brauchst:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  //Stringliste zum speichern der Daten
  fData: TStrings;
begin
  //Instanz anlegen
  fData := TStringList.Create;
  try
    //Liste laden
    fData.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Karn.adv.txt');
    //Wert "Std" von "Eingang" auslesen
    Edit1.Text := GetItem(fData, 'Eingang', 'Std');
    //wert "Besch" von Eingang" auslesen
    Memo1.Text := GetItem(fData, 'Eingang', 'Besch');
  finally
    //Liste wieder freigeben
    fData.Free;
  end;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz