Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как поместить данные в RichEdit контрол?

Delphi , Компоненты и Классы , TMemo и TRichEdit

Как поместить данные в RichEdit контрол?

Code:
unit dbrich;
interface
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, DB, DBTables, Menus, ExtCtrls, Mask, Buttons, DBCtrls;
 
//Замечание: вызывать Tablex.Edit необходимо перед изменением свойства paragraph
 
type
TDBRichEdit = class(TRichEdit)
private
   FDataLink: TFieldDataLink;
   FAutoDisplay: Boolean;
   FFocused: Boolean;
   FMemoLoaded: Boolean;
   FPaintControl: TPaintControl;
   procedure DataChange(Sender: TObject);
   procedure EditingChange(Sender: TObject);
   function GetDataField: string;
   function GetDataSource: TDataSource;
   function GetField: TField;
   function GetReadOnly: Boolean;
   procedure SetDataField(const Value: string);
   procedure SetDataSource(Value: TDataSource);
   procedure SetReadOnly(Value: Boolean);
   procedure SetAutoDisplay(Value: Boolean);
   procedure SetFocused(Value: Boolean);
   procedure UpdateData(Sender: TObject);
   procedure WMCut(var Message: TMessage); message WM_CUT;
   procedure WMPaste(var Message: TMessage); message WM_PASTE;
   procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
   procedure CMExit(var Message: TCMExit); message CM_EXIT;
   procedure WMLButtonDblClk(var Message: TWMLButtonDblClk);
     message WM_LBUTTONDBLCLK;
   procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
   procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
protected
   procedure Change; override;
   procedure KeyDown(var Key: Word; Shift: TShiftState); override;
   procedure KeyPress(var Key: Char); override;
   procedure Notification(AComponent: TComponent;
     Operation: TOperation); override;
   procedure WndProc(var Message: TMessage); override;
public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
   procedure LoadMemo;
   property   Field: TField read GetField;
published
   property AutoDisplay: Boolean read FAutoDisplay write SetAutoDisplay
     default True;
   property DataField: string read GetDataField write SetDataField;
   property DataSource: TDataSource read GetDataSource write SetDataSource;
   property ReadOnly: Boolean read GetReadOnly write SetReadOnly
     default False;
end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
RegisterComponents('Data Controls', [TDBRichEdit]);
end;
 
{Mostly copied from DBMemo}
 
constructor TDBRichEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
inherited ReadOnly := True;
FAutoDisplay := True;
FDataLink := TFieldDataLink.Create;
FDataLink.Control := Self;
FDataLink.OnDataChange := DataChange;
FDataLink.OnEditingChange := EditingChange;
FDataLink.OnUpdateData := UpdateData;
FPaintControl := TPaintControl.Create(Self, 'EDIT');
end;
 
destructor TDBRichEdit.Destroy;
begin
FPaintControl.Free;
FDataLink.Free;
FDataLink := nil;
inherited Destroy;
end;
 
procedure TDBRichEdit.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (FDataLink <> nil) and
   (AComponent = DataSource) then DataSource := nil;
end;
 
procedure TDBRichEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
inherited KeyDown(Key, Shift);
if FMemoLoaded then
begin
   if (Key = VK_DELETE) or ((Key = VK_INSERT) and (ssShift in Shift)) then
     FDataLink.Edit;
end else
   Key := 0;
end;
 
procedure TDBRichEdit.KeyPress(var Key: Char);
begin
inherited KeyPress(Key);
if FMemoLoaded then
begin
   if (Key in [#32..#255]) and (FDataLink.Field <> nil) and
     not FDataLink.Field.IsValidChar(Key) then
   begin
     MessageBeep(0);
     Key := #0;
   end;
   case Key of
     ^H, ^I, ^J, ^M, ^V, ^X, #32..#255:
       FDataLink.Edit;
     #27:
       FDataLink.Reset;
   end;
end else
begin
   if Key = #13 then LoadMemo;
   Key := #0;
end;
end;
 
procedure TDBRichEdit.Change;
begin
with FdataLink do
begin
   {if Assigned(FdataLink) and (Assigned(DataSource))and
    (DataSource.State = dsBrowse) then
     Edit; } {make sure edits on Attributes change}
   if FMemoLoaded then Modified;
end;
FMemoLoaded := True;
inherited Change;
end;
 
function TDBRichEdit.GetDataSource: TDataSource;
begin
Result := FDataLink.DataSource;
end;
 
procedure TDBRichEdit.SetDataSource(Value: TDataSource);
begin
FDataLink.DataSource := Value;
if Value <> nil then Value.FreeNotification(Self);
end;
 
function TDBRichEdit.GetDataField: string;
begin
Result := FDataLink.FieldName;
end;
 
procedure TDBRichEdit.SetDataField(const Value: string);
begin
FDataLink.FieldName := Value;
end;
 
function TDBRichEdit.GetReadOnly: Boolean;
begin
Result := FDataLink.ReadOnly;
end;
Взято из http://forum.sources.ru

Статья Как поместить данные в RichEdit контрол? раздела Компоненты и Классы TMemo и TRichEdit может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: TMemo и TRichEdit ::


реклама

::


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
27.10.2021 09:17:18/0.001046895980835/0