begin process at 2010 02 10 08:42:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

Texte

 > 

Marge dans un RichEdit ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Marge dans un RichEdit ?

samedi 20 novembre 2004 à 13:51:45 | Marge dans un RichEdit ?

arnaud_tournier

Hello everybody,

J aurais aimer savoir si quelqu un savait comment mettre la marge d 'un richedit d'un autre couleur que le richEdit et comment écrire dans cette marge. En fait, j aimerais pouvoir mettre les numéros de lignes dans le RichEdit comme la plupart des éditeurs de texte...

Merci d'avance....

Arnaud
samedi 20 novembre 2004 à 14:02:18 | Dûr dûr

grandvizir

Je crains que la numérotation des lignes soit impossible. En effet, le RichEdit est un contrôle géré entièrement par une DLL (RichMachin32.dll). A mes dernières nouvelles, il n'y a pas de propriété Canvas dans le RichEdit. Même si tu voulais rajouter un dessinage de lignes, tu ne pourrais pas.

Une solution: utiliser TSynEdit. Mais c'est un éditeur PlainText (du TXT quoi, pas du RTF) pour de la syntaxe en programmation (exemple). Là, il y a numérotation de ligne...

En fait, le SynEdit est coupé en deux. La numérotation est une gouttière Alignée à gauche, l'éditeur est un texteur aligné en Client. Pour ce qui est du RichEdit, il n'y a pas de solution, à part d'essayer de superposer des composants. Mais alors, ça devient vraiment très moche.

=============
Validez les réponses si ok...

ViewVite : HTML - ZIP
samedi 20 novembre 2004 à 15:39:51 | Re : Marge dans un RichEdit ?

ni69

Membre Club
Tu peux cependant utiliser ce code pour afficher la ligne où est situé le curseur dans un StatusBar par exemple...

@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
samedi 20 novembre 2004 à 21:51:03 | Re : Marge dans un RichEdit ?

arnaud_tournier

Réponse acceptée !
Merci pour votre aide les gars mais j'y suis arrivé, je vous donne le code source pour que ca puiss servir à quelqu un d autre....

unit UNewRichEdit;

interface

uses
Windows, Messages, RichEdit;

type
TNewRichEdit = class(TCustomRichEdit)
private
{ Déclarations privées }
FOnScroll: TNotifyEvent;
MARGINWIDTH : integer;
protected
procedure WndProc(var Msg: TMessage); override;
public
{ Déclarations publiques }
procedure CreateWnd(); override;
procedure drawMarge();
published
property OnScroll: TNotifyEvent read FOnScroll write FOnScroll;
end;

implementation

{ TNewRichEdit }


procedure TNewRichEdit.CreateWnd;
begin
inherited;
SendMessage(Self.Handle, EM_SETWORDBREAKPROC, 0, LPARAM(@EditWordBreak));
LongRec(Margins).Lo := 30;
LongRec(Margins).Hi := 30;
MARGINWIDTH := TFrmChild(Parent).Canvas.TextWidth('0000') + 6;
SendMessage(Self.Handle, EM_SETMARGINS, EC_LEFTMARGIN,MARGINWIDTH);
end;

procedure TNewRichEdit.drawMarge;
var Rect : TRect;
sTmp : String;
Canvas : TCanvas;
iStart : integer;
iEnd : integer;
iHeightOneChar : integer;
iLineVisible : integer;
info: TScrollInfo;
iDec : integer;
begin
iHeightOneChar := TFrmChild(Parent).Canvas.TextHeight('0');
FillChar(info, SizeOf(info), 0);
with info do
begin
cbsize := SizeOf(info);
fmask := SIF_ALL;
GetScrollInfo(Handle, SB_VERT, info);
end;
iDec := 0;
iStart := Perform(EM_GETFIRSTVISIBLELINE,0,0) + 1;

Canvas := TCanvas.Create;
Canvas.Handle := GetWindowDC(Self.Handle);
Canvas.Font.Color := clWhite;
Canvas.Font.Name := Self.Font.Name;
Canvas.Font.Size := Self.Font.Size;
Canvas.Brush.Color := clGray;


iEnd := Perform(EM_GETLINECOUNT,0,0) + 1;
iLineVisible := 0;
sTmp := '';

while ((iLineVisible * iHeightOneChar < ClientHeight)) do
begin
if (iLineVisible >= iEnd - 1) then
begin
sTmp := sTmp + ' ' + #13#10;
end
else
begin
sTmp := sTmp + ' ' + IntToStr(iStart + iLineVisible) + #13#10;
end;
inc(iLineVisible);
end;
Rect.Top := 0;
Rect.Left := MARGINWIDTH - 3;
Rect.Right := MARGINWIDTH;
Rect.Bottom := ClientHeight;
Windows.FillRect(Canvas.Handle, Rect, GetStockObject(GRAY_BRUSH));
Rect.Left := 0;
Rect.Top := - iDec;
Rect.Right := MARGINWIDTH - 3;
Windows.DrawText(Canvas.Handle, PChar(sTmp), length(sTmp), Rect, DT_RIGHT);
Canvas.Font.Color := clBlack;
ReleaseDC(Self.Handle, Canvas.Handle);
FreeAndNil(Canvas);
end;

procedure TNewRichEdit.WndProc(var Msg: TMessage);
begin
inherited;
if Msg.Msg = WM_VSCROLL then
begin
drawMarge;
end
else if Msg.Msg = WM_PAINT then
begin
drawMarge;
end;
end;

end.





Arnaud
samedi 20 novembre 2004 à 22:03:43 | Re : Marge dans un RichEdit ?

ni69

Membre Club
ok

@+
Bonne Prog'
Nico


Cette discussion est classée dans : richedit, marge


Répondre à ce message

Sujets en rapport avec ce message

image ds un richedit [ par sebrs1 ] comment inserer une image ds un richedit? RichEdit [ par SMoG ] YoP ;)Je vais peut etre paraitre tres bete, mais comment on fait pour utiliser plusieurs couleurs, plusieurs polices dans un meme richedit ?http://plo Tag HTML avec edit ou richedit [ par sebrs1 ] Connaissez-vous un composant comme richedit ou edit qui execute les code html???merci d'avance@+Sebrs1 Richedit et les couleurs [ par sebrs1 ] Bonjourje sui en train de faire un editeur html et j'ai un probleme avec le richedit.a chaque fois qu'on ecrit une lettre ds le richedit, ça colorie t Aide pour un éditeur de Texte ! dans un richedit. [ par nirousse ] Je désire ouvrir des fichiers texte avec mon logiciel.Mais, je ne sais pas comment je dois faire pour ouvrir l'un après l'autre les fichiers.Une boucl Position souris dans un RichEdit [ par bassman64 ] Je voudrais savoir comment faut faire pour coller du text à la position du curseur de la souris !J'arrive à coller le text : ClipBoard.AsText;Mais pas Enregistrer un richedit en TXT simple [ par nirousse ] Toujours pour mon éditeur de texte avec un RichEdit, J'ai remarqué qu'il me l'enregistre en rtf ou je ne sais pas trop quoi.Ce qui fait qu'il me rajou RichEdit Transparent [ par Meisty96 ] SalutJ'ai besoin d'un RichEdit avec la possibilité d'avoir un fond transparent.Merci pour toute vos idées...Meisty... Insertion d'images dans un RichEdit [ par Nebula ] salut à tous !je programme un client pour un chat (voir mon site pour plus de détails), et j'aurais besoin d'étendre les fonctionnalités du TRichEdit colorier un mot dans un richedit quand on tape [ par ninou ] bonjourpar exemple éditeur HTMLquand tu tapes un mot important il est en rougeMerci d'avance.


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales