trichview.support
Re: Converting standard text to RVF |
Author |
Message |
sean mccall |
Posted: 05/16/2003 18:46:53 Solved it. The options on the DBRichEdit component do not default to saving styles. Thanks for all your help. Sean sean mccall wrote: > Sergey, > > Thanks. The value now saves to a field. Now I have a new problem > regarding styles which I have moved to a new thread. > > Sean > > > Sergey Tkachenko wrote: > >> Look at the help topic: "Using viewer-style methods in DBRichViewEdit" >> (Example 1 in the topic about TDBRichViewEdit) >> >> In brief, you need to call table.Edit before loading RVF in >> DBRichViewEdit, >> and dbrve.Change after. >> Then call table.Post (if you want to save data immediately) or >> dbrve.Format >> (if you want to save them later). >> >> >> >>> Sergey, >>> >>> By changing to TMemoryStream, the data was successfully changed in the >>> TDBRichEdit control, but not saved to the field. The problem still >>> remains that any subsequent calls to the word processing form still >>> result in an access error. Any other ideas? Since the problem is >>> happening in the TRichEdit source I cannot trace to the problem. I do >>> know that none of the fonts and sizes are been initialized when the form >>> comes up due to the exception in the constructor. I also know that the >>> error is trapped in the source since only the debugger's copy of the >>> exception comes up. >>> >>> Thanks, >>> >>> Sean >>> >>> >>> Original Messahge: >>> >>> Hi, >>> >>> I am using the evaluation version of TRichView and am trying to create a >>> simple word processor to edit the contents of a TBlobField. I have a >>> TDBRichEdit on a form (Edit Form) that displays the contents of the blob >>> field which was populated from a simple text memo (TMemoField). On this >>> form I have a button which opens a separate word processing form which >>> is based on the TRichViewActions demo. >>> >>> I am able to load the word processing form with the data from the Edit >>> Form and able to pass it back to the Edit Form successfully in a stream. >>> I cannot get the streamed data to modify the field underlying the >>> TdBRichEdit. To make matters worse, if I make a change to the data in >>> the word processing form which results in an unsuccessful change to the >>> TDBRichEdit in the EditForm, I get an access error while creating the >>> word processing form in every subsequent call, even if it is from a new >>> instance of the edit form. The word processor form comes up since this >>> error is apparently trapped in the TRichView source code, but the >>> TRichViewEdit on that form is in an unstable state with no font or font >>> size selected. >>> >>> The OnClick method of the button on the Edit Form follows. Note that >>> DFEncoded is a TDBRichView, DTLetter is the table, TWordProc is the >>> renamed TRichViewActions demo. I used a TStringStream so I could easily >>> confirm the stream's contents while debugging. >>> >>> procedure TFMLetter.BTWordProcClick(Sender: TObject); >>> var >>> AStream: TStringStream; {stream to edit data} >>> begin >>> AStream := TStringStream.Create(''); {use a string stream} >>> try >>> DFEncoded.SaveRVFToStream(AStream, False); {save to stream} >>> if TWordProc.Execute(AStream) then begin {modified?} >>> DTLetter.Edit; {put in edit mode} >>> AStream.Position := 0; {start of stream} >>> DFEncoded.LoadRVFFromStream(AStream); {load from stream} >>> DFEncoded.Format; {reformat} >>> end; {if modified} >>> finally >>> AStream.Free; {release stream} >>> end; {try-finally} >>> end; {procedure} >>> >>> The word processing form TWordProc is essentially the TRichViewActions >>> demo renamed to TWordProc and with the following class method: >>> >>> >>> class function TWordProc.Execute(AStream: TStream): Boolean; >>> begin >>> with Create(Application) do begin >>> try >>> Editor.Clear; {clear editor} >>> AStream.Position := 0; {start of stream} >>> Editor.LoadRVFFromStream(AStream); >>> Editor.Format; {format the text} >>> ShowModal; {show modal} >>> Result := (ModalResult = mrOK); {true if value changed} >>> if Result then begin {make changes?} >>> AStream.Position := 0; {start of stream} >>> Editor.SaveRVFToStream(AStream, False); {save back to stream} >>> end; {if changes made} >>> finally >>> Release; {release form} >>> end; {try-finally} >>> end; {with the application} >>> end; {procedure} >>> >>> The other changes: >>> >>> 1. The "alternate method" for creating the the form is used so that it >>> starts with an empty document instead of trying to open the readme file. >>> 2. The close query method no longer asks to save to a file. >>> 3. The option to save tags as PChars has been turned off. >>> >>> Any ideas what I could be doing wrong here? What is the proper way to >>> initialize a TCustomRichEdit so that it is ready to edit text or have it >>> copied from some source other than a file. >>> >>> Thanks, >>> >>> Sean >>> >>> >>> Sergey Tkachenko wrote: >>> >>>> First idea: do not use TStringStream. It does not work correctly with >>> >>> >> binary >> >>>> data. >>>> Use TMemoryStream >>>> >>>> >>> >> >> > |
Powered by ABC Amber Outlook Express Converter