Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > FontDialog+ADOTable=Error


Автор: SyncMaster 3.8.2007, 15:36
Всем привет!
Часто захожу на ваш форум прикольный  - спс за форум.

А теперь вопросик –  

Нажимаю на Button – меняю на пример шрифт, шрифт меняется в DBRichEdit
и так можно менять до бесконечности пока не выделишь текст в DBRichEdit  или не щелкнешь курсором в область  DBRichEdit - после того как за хочешь еще раз изменить текст сразу ошибка.

ADOTable1: Dataset not in edit or insert mode.




Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, DB, ADODB, ComCtrls;

type
  TForm1 = class(TForm)
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    Button1: TButton;
    ADOConnection1: TADOConnection;
    FontDialog1: TFontDialog;
    DBRichEdit1: TDBRichEdit;
    procedure Button1Click(Sender: TObject);
  private
    function CurrText: TTextAttributes;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.CurrText: TTextAttributes;
begin
 if DBRichEdit1.SelLength < 0 then Result := DBRichEdit1.SelAttributes
else Result := DBRichEdit1.DefAttributes;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 FontDialog1.Font.Assign(DBRichEdit1.SelAttributes);
if FontDialog1.Execute then
CurrText.Assign(FontDialog1.Font);
end;

end.

Автор: ALeXandrK 3.8.2007, 16:11
Цитата

FontDialog1.Font.Assign(DBRichEdit1.SelAttributes);


Поставь эту строчку в событие формы OnCreate и все заработает. smile 
Проверено.

Автор: SyncMaster 3.8.2007, 16:46
Страно а у меня ошибка  smile 

Автор: MetalFan 3.8.2007, 17:20
Цитата(SyncMaster @  3.8.2007,  15:36 Найти цитируемый пост)
 if DBRichEdit1.SelLength < 0 then Result := DBRichEdit1.SelAttributes
else Result := DBRichEdit1.DefAttributes;

странный код...
Если ДлиннаВыделения < 0 то ВзятьПараметрыВыделения...

Автор: SyncMaster 3.8.2007, 17:40
Написал так - 
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, DB, ADODB, ComCtrls;

type
  TForm1 = class(TForm)
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    Button1: TButton;
    ADOConnection1: TADOConnection;
    FontDialog1: TFontDialog;
    DBRichEdit1: TDBRichEdit;
    procedure Button1Click(Sender: TObject);
  private
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not FontDialog1.Execute then exit;
       DBRichEdit1.Font:=FontDialog1.Font;
end;


end.


все равно ошибка -  но если в свойсвах DBRichEdit1   - Enabled: True изменить на false  то все работает нормально.
но нельзя видилить тексt.  

 smile 

Автор: SyncMaster 3.8.2007, 18:57
Темку можно закрыть!!!
не стал мучится заменил DBRichEdit1 на DBMemo1  smile 

Автор: ALeXandrK 4.8.2007, 15:01
Так возми и закрой - ты ж ее открыл smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)