Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - In TMemo HTML aktivieren oder einzelne Buchstaben fett


beastofchaos - Fr 10.06.11 00:25

Moderiert von user profile iconNarses: Abgetrennt von [url=http://branch.delphi-forum.de/viewtopic.php?t=88669]hier[/url].

Nur so im Naachhinein - die leichteste Lösung ist simpel:

Dazu muss am besten der HTML-Code in einer txt-Datei nebenbei liegen...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TMainForm.AddTextToMemo;
var
  file: textfile;
  Zeilen: array of String;
  i: Integer;
begin
  assignfile(file, path + "HTMLdatei.txt");    // path = Pfad zum Exe-Ordner
  if not FileExists(filethen                 // Wenn nicht da, dann abbrechen
    Exit;
  
  Reset(file);                                 // File öffnen
  i := 0;
  while not EOf(filedo                       // Ende der Datei erreicht?
      begin
      SetLength(Zeilen, i + 1);                // Array um eins erweiterm
      ReadLn(file, Zeilen[i]);                 // Zeile speichern und im File eine Linie weitergehen
      Inc(i);
      end;
  Closefile(file);                             // Bearbeitung des Files abschleißen

  for i := 0 to high(Zeilen) do
    Memo1.Lines.Add(Zeilen[i]);                // Alle Linien in der Memo einfügen
end;



Jetzt hab ich dafür eine Frage. Ist es möglich in einer Memo HTML zu aktivieren oder (in der Memo) einzelne Buchstaben fett zu machen?

Gruß, Thomas


Narses - Fr 10.06.11 00:43

Moin!

user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Nur so im Naachhinein
Was brachte das jetzt den jahrealten Thread wieder auszugraben? :nixweiss:

user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
die leichteste Lösung ist simpel:
Dein Code ist viel zu umständlich und auch unflexibel. Wenn, dann würde man es vielleicht so brauchen können: :idea: ;)

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure AddTextToStrings(AStrings: TStrings; const AFilename: String);
  var
    SL: TStringList;
begin
  if NOT FileExists(AFilename) then
    Exit;
  SL := TStringList.Create;
  try
    try
      SL.LoadFromFile(AFilename);
    except
      MessageDlg('Fehler beim Laden der Datei:'#13+Exception(ExceptObject).Message, mtError, [mbOK], 0);
    end;
    AStrings.AddStrings(SL);
  finally
    SL.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  AddTextToStrings(Memo1.Lines, 'C:\Test.txt');
end;



user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Jetzt hab ich dafür eine Frage. Ist es möglich in einer Memo HTML zu aktivieren oder (in der Memo) einzelne Buchstaben fett zu machen?
Nein, das kann ein TMemo nicht. Dafür brauchst du z.B. ein TRichEdit. :idea: ;)

cu
Narses


jaenicke - Fr 10.06.11 05:56

Es gibt in der JEDI JVCL entsprechende Komponenten. TJvHtLabel, TJvHtListBox und TJvHtComboBox. Wären die vielleicht für deinen Zweck für die Anzeige geeignet?

Sonst bleibt wirklich nur ein RichEdit und selber machen.


Gerd Kayser - Fr 10.06.11 10:14

user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Ist es möglich in einer Memo HTML zu aktivieren oder (in der Memo) einzelne Buchstaben fett zu machen?

In einem RichEdit ist das eigentlich recht einfach. Beispiel:

Delphi-Quelltext
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:
procedure TMainform.ERueckseiteKeyPress(Sender: TObject; var Key: Char);
const
  Key_Ctrl_S = 19;
begin
  with (Sender as TRichEdit).SelAttributes do
    begin
      if BtnFett.Pressed then
        Style := Style + [fsBold]
      else
        Style := Style - [fsBold];

      if BtnKursiv.Pressed then
        Style := Style + [fsItalic]
      else
        Style := Style - [fsItalic];

      if BtnUnterstrichen.Pressed then
        Style := Style + [fsUnderline]
      else
        Style := Style - [fsUnderline];

      if Ord(Key) = Key_Ctrl_S then     // auf selektierten Text anwenden
        Key := #0;
    end;
end;

Oder wenn Du die Attribute im Programm selber setzen möchtest. Beispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
      ERueckseite2.Clear;
      ERueckseite2.SelAttributes.Style := [fsUnderline];
      ERueckseite2.Lines.Add('Seriennummer:');
      ERueckseite2.SelAttributes.Style := [];
      ERueckseite2.Lines.Add('');
      ERueckseite2.Lines.Add('XXXX');


beastofchaos - Fr 10.06.11 18:57

Gut, jetzt brauch ich nur die TRichEdit :P Ganze Palette durchgeschaut und nichts gefunden :/ Ist das kostenpflichtig oder gäbe es eine kostenlose Ausweich-Möglichkeit?

Gruß, Thomas

PS: @Narses: Also kurz "StringList.LoadFromFile(AFilename);" :) - und ich hab das hier gepostet, um nicht einen neuen Thread zu öffnen und weil es hier reinpasste. Was ist besser? 100 Threads über das selbe oder nur 50 xD


jaenicke - Fr 10.06.11 19:36

TRichEdit sollte eigentlich bei allen Versionen dabei sein.

Und es liegt unter Win32:

RichEditWin32


beastofchaos - Sa 11.06.11 01:31

Gefunden, getestet und glücklich geworden ;)

Dankeschön :)