TMemo
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
TMemo
Hallo,
gibt es eine Möglichkeit das selektiere in einem Memofeld abzuschalten?
oder das Kopieren mit Ctr+ C.
ReadOnly steht auf true.
Enabled muss aber auf true stehen, damit die ScrollBars funktionieren.
Gruß
gibt es eine Möglichkeit das selektiere in einem Memofeld abzuschalten?
oder das Kopieren mit Ctr+ C.
ReadOnly steht auf true.
Enabled muss aber auf true stehen, damit die ScrollBars funktionieren.
Gruß
Re: TMemo
Bist du sicher, dass deine Benutzer nicht irgendwann auf die Idee kommen könnten, sich einen Teil des im Memo dargestellten Textes für ein anderes Programm in die Zwischenablage zu kopieren? Immer wenn ich in meinen eigenen Programmen solche Ideen hatte, musste ich das bald aus genau diesem Grund rückgängig machen.
Ansonsten könntest du in den KeyDown, KeyUp, MouseDown, MouseMove-Events des Memo dessen SelLength auf 0 setzen.
Ansonsten könntest du in den KeyDown, KeyUp, MouseDown, MouseMove-Events des Memo dessen SelLength auf 0 setzen.
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: TMemo
Schon klar, funktioniert trotzdem nicht.wp_xyz hat geschrieben:Bist du sicher, dass deine Benutzer nicht irgendwann auf die Idee kommen könnten, sich einen Teil des im Memo dargestellten Textes für ein anderes Programm in die Zwischenablage zu kopieren? Immer wenn ich in meinen eigenen Programmen solche Ideen hatte, musste ich das bald aus genau diesem Grund rückgängig machen.
Ansonsten könntest du in den KeyDown, KeyUp, MouseDown, MouseMove-Events des Memo dessen SelLength auf 0 setzen.
OK!
Geht doch, Danke.
-
- 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)
Re: TMemo
Code: Alles auswählen
Memo1.SelStart:=0;
Memo1.SelLength:=0;
Memo1.SelText:='';
MFG
Michael Springwald
Michael Springwald
Re: TMemo
Code: Alles auswählen
Unit uMemoCheck;
{$mode objfpc}{$H+}
Interface
Uses
Windows, Messages, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, StdCtrls;
Type
TForm1 = Class(TForm)
Memo1: TMemo;
Procedure FormCreate (Sender: TObject);
Procedure FormKeyDown (Sender: TObject; Var Key: Word; Shift: TShiftState);
Private
FWndProc: TWndMethod;
Procedure MemoWndProc (Var MSG: TMessage);
End;
Var
Form1: TForm1;
Implementation
{$R *.lfm}
Procedure TForm1.MemoWndProc(Var MSG: TMessage);
Begin
If MSG.Msg = WM_SETFOCUS
Then HideCaret(Memo1.Handle)
Else FWndProc (MSG);
End;
Procedure TForm1.FormKeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
Begin
If Sender = Memo1
Then
Begin
//Key:= 0;
//oder
If ssCTRL In Shift Then Key:= 0; //falls CTRL nicht benötigt wird...
End;
End;
Procedure TForm1.FormCreate(Sender: TObject);
Begin
FWndProc := Memo1.WindowProc;
Memo1.WindowProc:= @MemoWndProc;
End;
End.
In D7 ist es dann nicht mehr möglich Text zu selektieren und der Cursor ist auch gleich weg...
Bei Lazarus geht das leider nicht... Der Cursor ist natürlich weg, aber man kann immer noch Text auswählen.
Eigentlich reicht schon das hier aus "Memo1.SelLength:= 0;", aber das ist keine gute Lösung, da man immer noch etwas von der Markierung sieht und es flackert wie bekloppt...
-
- 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)
Re: TMemo
Er könnte auch ganz einfach eben schnell ein eigenen klein Text-Render-Engine Bauen mit einigen netten Extras.
Ist gar nicht so Aufwendig.....Innerhalb von 4 Wochen kann man soweit sein.
Ist gar nicht so Aufwendig.....Innerhalb von 4 Wochen kann man soweit sein.
MFG
Michael Springwald
Michael Springwald
-
- 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)
Re: TMemo
Eigentlich war das eher ein Scherz, aber bitte:Ach was? Echt ? Von was für einer Basis sprichst du denn hier? OpenGL ??
Gibt es dazu brauchbare EinsteigerTutorials... irgendwo ??
Nimm TCanvas.
Nimm eine TStringlist
Code: Alles auswählen
var
px,py:Integer;
begin
px:=0;
py:=0;
for i:=0 to Stringlist.Count-1 do begin
Canvas.Textout(px,py,Stringlist[i]);
py:=py+Canvas.TextHeight(StringList[i]);
end;
Das kann man jetzt noch ausbauen.
Meine Strukturen sahen zu letzt etwas anders aus, aber für den Anfang sollte das reichen.
Ich kann man schauen, ob ich ein erweitertes Beispiel entwickeln kann. Wo du auch Scrollen kannst. Es geht darum, einfach nur Text Anzuzeigen, ohne besonders Extras?
MFG
Michael Springwald
Michael Springwald
Re: TMemo
Deswegen dachte ich eher an ein Panel und TLabel Array. (Array Of Array[0..1] Of TLabel)..Wo du auch Scrollen kannst.
Die Dinger kann man leicht und sauber scrollen wenn man direkt scrollt über Top und Left und dazu auch noch seitenweise (ClientHeight).
ScrollBy schmiert bei D7 und 'nem Panel oder 'ner ScrollBox.. hab' ich mit Lazarus bis jetzt noch nicht getestet...
Und wenn man mal 'ne Zeile anklicken muß, dann kann man das per Sender leicht machen.
Oder mal 'ne Farbe ändern..
Ich hab' echt gedacht man könnte das recht einfach mal irgendwie bauen... Deine RenderEngine... na toll....

-
- 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)
Re: TMemo
Ein erweitertes Beispiel, morgen kann ich es noch etwas erweitern.
Ein Anwendung Beispiel ist dabei. Du kannst Scrollen und einfachen Text da stellen. Mit ein paar einfachen Regeln könnte man den Text auch noch Formatieren. Problematisch wird es nur bei unterschiedlichen Schrift Größen.
Unterschiedliche Schrift Farben und so, wäre kein Problem.
Ein Anwendung Beispiel ist dabei. Du kannst Scrollen und einfachen Text da stellen. Mit ein paar einfachen Regeln könnte man den Text auch noch Formatieren. Problematisch wird es nur bei unterschiedlichen Schrift Größen.
Unterschiedliche Schrift Farben und so, wäre kein Problem.
- Dateianhänge
-
plTextEngine.zip
- (127.87 KiB) 81-mal heruntergeladen
MFG
Michael Springwald
Michael Springwald
Re: TMemo
Hey, cool... funzt gut...
Unterschiedliche Schriftgröße finde ich nicht so wichtig...
Farbe und WelcheZeileWurdeGeklickt wäre interessant, aber ich muß mir erstmal die Details anschauen...
Hmm, Mist ich muß weg... heute Abend vielleicht...
Unterschiedliche Schriftgröße finde ich nicht so wichtig...
Farbe und WelcheZeileWurdeGeklickt wäre interessant, aber ich muß mir erstmal die Details anschauen...
Hmm, Mist ich muß weg... heute Abend vielleicht...
Re: TMemo
@pluto:
Danke für den Code...
Hatte bis jetzt nur kurz Zeit 'nen Blick drauf zu werfen...
Ich hab' 'ne Kantenglättung eingebaut und die Schriftgröße verändert. Jetzt kann man nur noch von 0 - 265 scrollen...
Das Scrollen sieht sauber aus, kann kein Schmieren erkennen.
DoubleBuffered scheint gegen das Flackern nicht zu wirken, wohl wegen dem direkten Canvas Paint...
Für 'ne Liste hatte ich bis jetzt noch nicht direkt auf das Canvas gezeichnet. Viele sagen man soll lieber gleich GDI+ benutzen oder OpenGL...
Deswegen hab' ich immer Komponenten benutzt.
Nochmal besten Dank, macht Spass damit 'rumzuspielen... heute Abend hab' ich wahrscheinlich mehr Zeit..
Danke für den Code...
Hatte bis jetzt nur kurz Zeit 'nen Blick drauf zu werfen...
Ich hab' 'ne Kantenglättung eingebaut und die Schriftgröße verändert. Jetzt kann man nur noch von 0 - 265 scrollen...
Das Scrollen sieht sauber aus, kann kein Schmieren erkennen.
DoubleBuffered scheint gegen das Flackern nicht zu wirken, wohl wegen dem direkten Canvas Paint...
Für 'ne Liste hatte ich bis jetzt noch nicht direkt auf das Canvas gezeichnet. Viele sagen man soll lieber gleich GDI+ benutzen oder OpenGL...
Deswegen hab' ich immer Komponenten benutzt.
Nochmal besten Dank, macht Spass damit 'rumzuspielen... heute Abend hab' ich wahrscheinlich mehr Zeit..