Templates similar in MS Word

General TRichView support forum. Please post your questions here
Post Reply
snike555
Posts: 14
Joined: Thu May 06, 2010 10:18 am

Templates similar in MS Word

Post by snike555 »

How to make a TRichEdit text is not editable except for special fields (smth like MS Word templates) and jump between editable fields with Tab or Enter. Is it possible?
snike555
Posts: 14
Joined: Thu May 06, 2010 10:18 am

Post by snike555 »

TRichEdit = TDBRichViewEdit
Sergey Tkachenko
Site Admin
Posts: 17569
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko »

One of possible solutions: insert controls (like TEdit). You will be able to navigate with tabs between them.
When you need a final result (for example, for printing), you can replace controls to text, see http://www.trichview.com/forums/viewtopic.php?t=1131
See also http://www.trichview.com/help/idh_examp ... edit2.html for using TEdits in TDBRichViewEdit.
snike555
Posts: 14
Joined: Thu May 06, 2010 10:18 am

Post by snike555 »

Thank you.

My update:

Code: Select all

procedure TForm1.EditChange(Sender: TObject);
var
  tw : Integer;
begin
  if Sender is TEdit then
    begin
      tw := Canvas.TextWidth(TEdit(Sender).Text);
      if tw < 50 then
        tw := 50;
      TEdit(Sender).Width := tw + 15;
    end;

  if DBRVE.CanChange then
    begin
      DBRVE.Change;
      DBRVE.Format;
    end
  else
    Beep;
end;
1) How to remove control (TEdit) from TDBRichViewEdit?
2) How TabOrder where add new TEdit?
Sergey Tkachenko
Site Admin
Posts: 17569
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko »

How a control must be removed?

--

Unfortunately, it's not simple to control tab order in TRichViewEdit/TDBRichViewEdit.
However, if you load this document in TRichView/TDBRichView, Tab and Shift+Tab will work properly (navigating between controls and hyperlinks). Tab will move the focus to the next control in the document, ignoring TabOrder property.
snike555
Posts: 14
Joined: Thu May 06, 2010 10:18 am

Post by snike555 »

Sergey Tkachenko wrote:How a control must be removed?

Yes, how?

[quote="Sergey Tkachenko"
Unfortunately, it's not simple to control tab order in TRichViewEdit/TDBRichViewEdit.
However, if you load this document in TRichView/TDBRichView, Tab and Shift+Tab will work properly (navigating between controls and hyperlinks). Tab will move the focus to the next control in the document, ignoring TabOrder property.[/quote]

It's true, but how make tabOrder where add new TEdit?
Sergey Tkachenko
Site Admin
Posts: 17569
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko »

:) I mean, do you want to delete the control?
Do you want to delete the focused control as an editing operation (undoable) or do you want something different?
For example, one of possibilities to delete all controls and replace them to their text is shown in http://www.trichview.com/forums/viewtopic.php?t=1131

You can assign TabOrder property of new TEdit inserted in document. Or call a code that enumerates all controls in the document and assign their TabOrders.
It will work ok in the main document, but not in tables (one of the problems - in tables of TRichViewEdit, TAB moves the caret to the next cell).

As I can guess, you need 3 modes:
1) editing templates, inserting and deleting controls and text between them; in this mode, TABs are not important, because any text is editable; just edit documents in TDBRichViewEdit
2) filling a template with data; just load this document in TRichView or TDBRichView. TAB will move to the next control in the document, so you do not need to worry about tab order. The only problem: you will not be able to change control widths according to text size.
3) printing; you can print either the document as it is, or after replacing all controls to text, as it shown in http://www.trichview.com/forums/viewtopic.php?t=1131
snike555
Posts: 14
Joined: Thu May 06, 2010 10:18 am

Post by snike555 »

I want to delete the focused control.
Sergey Tkachenko
Site Admin
Posts: 17569
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko »

Code: Select all

  if RichViewEdit1.SelectControl(ActiveControl) then begin
    RichViewEdit1.DeleteSelection;
    RichViewEdit1.SetFocus;
  end;
It is assumed that this code is called in a form's method, because it uses form's ActiveControl property.
snike555
Posts: 14
Joined: Thu May 06, 2010 10:18 am

Post by snike555 »

Thank you, it's ok!

Next question on this subject:

Now:
Image

I want:
Image
snike555
Posts: 14
Joined: Thu May 06, 2010 10:18 am

Post by snike555 »

And next problem:

Code: Select all

  if not (ActiveControl is TDBRichViewEdit) then Exit;

  CB := TComboBox.Create(nil);
  CB.Width := 80;
  CB.PopupMenu := PMCB;
  CB.OnChange := EditChange;
  DBRVE.InsertControl('', CB, rvvaBaseline);

- It's work!

But, this don't work:

Code: Select all

  if not (ActiveControl is TDBRichViewEdit) then Exit;

  CB := TDBComboBoxEh.Create(nil);
  CB.Width := 80;
  CB.PopupMenu := PMCB;
  CB.OnChange := EditChange;
  CB.DropBox.Sizible := True;
  DBRVE.InsertControl('', CB, rvvaBaseline);

After save data in TDBRichViewEdit component TDBComboBoxEh not showed.
Sergey Tkachenko
Site Admin
Posts: 17569
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko »

As for vertical alignment, use rvvaAbsMiddle instead of rvvaBaseline when inserting a control.

What's TDBComboBoxEh?
snike555
Posts: 14
Joined: Thu May 06, 2010 10:18 am

Post by snike555 »

TDBComboBoxEh from http://ehlib.com/

Replace controls to text with TComboBox don't work.
I use TDBRichViewEdit v. 12.2.3. and Delphi 2010 upd 4/5
Sergey Tkachenko
Site Admin
Posts: 17569
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko »

I'll try to test TDBComboBoxEd later.

Do you mean that the demo http://www.trichview.com/forums/viewtopic.php?t=1131 does not work with TComboBox? But how is it possible? This demo has TComboBox in a sample document.
This demo has GetControlText function returning text for the given control. In this demo, it supports TComboBox, TEdit and TRadioGroup, but you can easily modify it for other control types.
Post Reply