Zeichnen in TCustomEdit

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Naja, es wahr halt nur ein Vorschlag(zugeben kein guter).

Aber mal was anders:
wie währe ein StringGrid und dann nur eine Zeile.
Ich meine nämlich dort kannst du rein zeichnen was du möchtes. oder ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

lass es bitte.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

ach pluto, es geht doch wohl auch darum, nicht die ganze Oberfläche umbauen zu müssen.

Und außerdem ist es doch wesentlich eleganter, die Standardkomponenten für soetwas zu nehmen, anstatt nen Stringgrid da zu vergewaltigen.
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Genau, aber scheint wohl keinen schönen weg zu geben.
Entweder ein Satz neuer Komponenten.
Oder keine Markierungen innerhalb dieser also nur auf Knopfdruck in nem separaten Dialog.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

naja eine Stringgrid ist ja eine Standard Komponente oder nicht ?
Mit Wenig Aufwand sieht sie so aus wie ein TEdit... besser währe es die TStringDraw zu nehmen....

Christian ich frage mich wo, wo sind diese Original Grafiken abgespeichert ?
Von einem TEdit z.b. Das sind doch Grafiken oder ?

Auch wenn ich damit aufhören sollte, eine Idee habe ich noch: es gibt doch SelStart und SelEnd oder so Ähnlich, sieht zwar nicht so doll aus, aber würde doch auch gehen oder ? So mehr Vorschläge hätte ich auch im Moment nicht
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Pluto, kannst du nicht einfach mal die Klappe halten, ich habs doch nun schon 3x gesagt das ich keine Grids mit nem riesigen Overhead für ein Edit nehmen werde. Musst du immer zu allem deinen Senf dazugeben ? Erinner dich an mein Motto.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@Christian

Wie wäre es denn, wenn du den Text in HTML umwandelst und das da machst? Dafür hatte ich für Delphi mal irgendwo ein Tool gefunden mit dem das ging. Auf jeden Fall hat man da bei HTML deutlich mehr und einfachere Formatierungen zur Verfügung. Die JEDI's haben sowas auch irgendwo benutzt.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

WOW, hast du dir eigentlich durchgelesen was ich machen will ?
Als nächstes schlägt einer vor das ich Open Office oder Word starte sobald ein Buchstabe in einem Edit eingegeben wird...

Sorry Schnuller aber ...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

@Christian
Ja es ist nicht einfach, hier im Forum, eine Richtige Antwort auf eine scheinbar einfachere Frage zu bekommen, wobei die Antworten doch auf der Hand Liegen oder nicht ?
MFG
Michael Springwald

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Antrepolit »

Hallo Christian,

du willst das also in nem TCustomEdit unterstrichen haben?
Wie wäre es, wenn du einfach en Bitmap mit den Unterstreichungen
über das Textfenster des Edits legst, und in ner Paint-Methode erst
den TCustomEdit und dann das Bitmap zeichnest? Nicht fein, aber
könnte funktionieren.
Grüße, Antrepolit

care only if your os is really burning

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ja, ich hab auch schon über solche Sachen nachgedacht.
Aber welche Paint funktion ??
Problematisch ist dabei auch das Scrollen und beim Memo ists dann ganz aus.
Ich werde es erstmal so gesalten das ein Button rechts oben in den Controls landet, über den ein separater Dialog aufgerufen wird der dann die Prüfung und Korrektur vornimmt. Nicht ganz so elegant aber sauber und einfach lösbar.
Soll nicht heißen das sich Jemand der eine Lösung für dieses Problem gesehen oder gefunden hat zurückhalten soll hier zu posten.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe möglicherweise was gefunden:

Code: Alles auswählen

procedure TForm1.MemoSubClassWndProc(var Message: TMessage);
 
var
 
  c: Char;
 
  PaintSt: TPAINTSTRUCT;
 
  cav: TCAnvas;
 
  Dc: HDC;
 
  CopRect: TRect;
 
  Text1, Text2: String;
 
  TextWidth: integer;
 
begin
 
  case Message.Msg of
 
  WM_CHAR:
 
    begin
 
      Case Char(Message.WParam) of
 
      'a'..'z','A'..'Z','0'..'9':
 
        begin
 
          c:= Char(Message.WParam);
 
          MemoCav.TextOut(MemoCav.TextWidth(MemoText), 0, c);
 
          MemoText:= MemoText + c;
 
        end;
 
      end;
 
      if byte(Message.WParam) = VK_Back then
 
      begin
 
        if length(MemoText)> 0 then
 
        begin
 
          Text1:= Copy(MemoText, 1, length(MemoText)- 1);
 
          TextWidth:= MemoCav.TextWidth(Text1);
 
          Text2:= MemoText[length(MemoText)];
 
          CopRect:= Rect(TextWidth,0,TextWidth+ MemoCav.TextWidth(Text2), MemoCav.TextHeight(Text2));
 
          MemoCav.CopyRect(CopRect,BildTemp.Canvas,CopRect);
 
          MemoText:= Text1;
 
        end;
 
      end;
 
    end;
 
  WM_PAINT:
 
    begin
 
      Dc:= BeginPaint(Memo1.Handle, PaintSt);
 
      cav:= TCAnvas.Create;
 
      cav.Handle:= Dc;
 
      cav.Draw(0,0,BildTemp);
 
      cav.Brush.Style:= bsClear;
 
      cav.TextOut(0, 0, MemoText);
 
      cav.Free;
 
      EndPaint(Memo1.Handle, PaintSt);
 
    end;
 
    else
 
      OldWindowProc(Message);
 
  end;
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
 
var
 
  Pfad: AnsiString;
 
begin
 
  BildTemp:= TBitmap.Create;
 
  Pfad:= ExtractFilePath(application.ExeName)+'Bild.bmp';
 
  if FileExists(Pfad) then
 
    BildTemp.LoadFromFile(Pfad);
 
 
 
  OldWindowProc:= Memo1.WindowProc;
 
  Memo1.WindowProc:= MemoSubClassWndProc;
 
end;
 
 
 
procedure TForm1.FormShow(Sender: TObject);
 
begin
 
  MemoDc:= GetDC(Memo1.Handle);
 
  MemoCav:= TCanvas.Create;
 
  MemoCav.Brush.Style:= bsClear;
 
  MemoCav.Handle:= MemoDc;
 
end;
 
 
 
procedure TForm1.FormDestroy(Sender: TObject);
 
begin
 
  Memo1.WindowProc:= OldWindowProc;
 
  windows.ReleaseDC(Memo1.Handle, MemoDC);
 
  MemoCav.Free;
 
end;
das kommt von hier:
http://www.delphipraxis.net/topic111985 ... dmemo.html" onclick="window.open(this.href);return false;
evlt. hilft es dir !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Net schlecht, funktioniert bestimmt nur Im Windows aber erstmal ein Ansatz
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich habe noch was gefunden:
http://www.swissdelphicenter.ch/de/showcode.php?id=2150" onclick="window.open(this.href);return false;
MFG
Michael Springwald

Antworten