Page 1 of 1
page setup problem
Posted: Sat Aug 22, 2009 12:57 pm
by Cosmin3
I think there is a problem with the new version 2.2.2.
I create a window with srv. Right after this (in the same procedure) I set a lot of things in which this one:
srvEditor.UnitsProgram := rvuMillimeters;
SclRVRuler1.UnitsDisplay := ruMillimeters;
SclRVRuler2.UnitsDisplay := ruMillimeters;
srvEditor.SetMarginUnit(25, 15, 10, 15);
The problem is that srveditor.PageProperty.BottomMargin is 0.3 after the window is shown.
If I try ShowMessage(FloatToStr(srveditor.PageProperty.BottomMargin)) right after this code says that is 15.081 (!).
After the window is shown (but not in that procedure) if I try this code works fine.
So the problem is that I use it right after creation.
This code worked 100% for versions <= 2.2.1.
Is there something that can be done...?
Thank you.
Posted: Sat Aug 22, 2009 1:27 pm
by Sergey Tkachenko
We tried to reproduce this bug in the following code:
Code: Select all
procedure TForm1.Button1Click(Sender: TObject);
begin
rvEditor := TSRichViewEdit.Create(nil);
rvEditor.Parent := self;
SclRVRuler1.SRichViewEdit := rvEditor;
SclRVRuler2.SRichViewEdit := rvEditor;
rvEditor.UnitsProgram := rvuMillimeters;
SclRVRuler1.UnitsDisplay := ruMillimeters;
SclRVRuler2.UnitsDisplay := ruMillimeters;
rvEditor.SetMarginUnit(25, 15, 10, 15);
ShowMessage(FloatToStr(rvEditor.PageProperty.BottomMargin));
// rvEditor.Parent := nil;
// rvEditor.Destroy;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(FloatToStr(rvEditor.PageProperty.BottomMargin));
end;
Both messages (just after the creation, and when clicking on the second button) display 15.
Probably some other code resets margins. Can you send a project reproducing this problem to Ilya?
Posted: Sat Aug 22, 2009 1:39 pm
by Cosmin3
My code is:
Code: Select all
if Busy then
Exit;
with TfrmMainChild.Create(Self) do
begin
Busy := True;
WindowState := wsMaximized;
Constraints.MinWidth := 640;
Constraints.MinHeight := 480;
srvEditor.RichViewEdit.Style.SelectionMode := rvsmChar;
srvEditor.RichViewEdit.Clear;
with srvEditor.RichViewEdit.Style do
for i := 0 to TextStyles.Count - 1 do
TextStyles[i].Unicode := True;
idChildUnic := Abs(Handle);
RVALocalizeRuler(SclRVRuler1);
RVAControlPanel1.DefaultControl := srvEditor.RichViewEdit;
TSRVToolButton(srvtlwndw1.Buttons.Items[0]).Caption := TextRo('Arie editabilã');
TSRVToolButton(srvtlwndw1.Buttons.Items[1]).Caption := TextRo('Cãutare');
TSRVToolButton(srvtlwndw1.Buttons.Items[2]).Caption := TextRo('Înlocuire multiplã');
TSRVToolButton(srvtlwndw1.Buttons.Items[3]).Caption := 'DEX';
TSRVToolButton(srveditor.MenuHButtons.Items[0]).Hint := TextRo('Suport punctuaþie');
TSRVToolButton(srveditor.MenuHButtons.Items[4]).Hint := TextRo('Riglã');
PageModes := pmBreakPage;
FileType := ftRTF;
lbInfo.Caption := 'Nr. sugestii: 0 ';
btnCloseSuport.Hint := TextRo('Închide');
lbCaption.Caption := TextRo('Suport punctuaþie');
Caption := 'Fara titlu.rtf';
FullFileName := '';
TextLoaded := False;
frmMain.cmbListZoom.ItemIndex := 3; //3 = default pe 100 %
if Pos('%', cmbListZoom.Text) > 0 then
srvEditor.ViewProperty.ZoomPercent := StrToIntDef(Copy(cmbListZoom.Text, 1, Length(cmbListZoom.Text) - 1), 0)
else
srvEditor.ViewProperty.ZoomPercent := StrToIntDef(cmbListZoom.Text, 0);
RememberZoomMode := srvEditor.ViewProperty.ZoomMode;
RememberZoomPercent := srvEditor.ViewProperty.ZoomPercent;
RememberPageFormat := srvEditor.PageProperty.PageFormat;
srvEditor.UnitsProgram := rvuMillimeters;
SclRVRuler1.UnitsDisplay := ruMillimeters; //ruCentimeters;
SclRVRuler2.UnitsDisplay := ruMillimeters; //ruCentimeters;
srvEditor.SetMarginUnit(25, 15, 10, 15);
// ShowMessage(FloatToStr(srveditor.PageProperty.BottomMargin));
SclRVRuler1.Scrolled;
SclRVRuler2.Scrolled;
SclRVRuler1.DoMarginChanged;
srvEditor.PageProperty.PageNoVisible := False;
if frmConfig.cbHideRigla.Checked then begin
Panel3.Visible := False;
SclRVRuler1.Visible := False;
SclRVRuler2.Visible := False;
end;
FontName := frmConfig.pnlFontExDoc.Font.Name;
FontSize := frmConfig.pnlFontExDoc.Font.Size;
Busy := False;
with rvActionFontEx1 do
begin
UserInterface := False;
ValidProperties := [rvfimFontName, rvfimSize, rvfimCharset, rvfimBold, rvfimItalic, rvfimUnderline, rvfimStrikeout, rvfimOverline, rvfimColor];
Font := frmConfig.pnlFontExDoc.Font;
Execute;
UserInterface := True;
end;
if cmbFontName.Items.Count > 0 then
begin
cmbFontName.ItemIndex := cmbFontName.Items.IndexOf(frmConfig.pnlFontExDoc.Font.Name); // 'Times New Roman'
cmbFontSize.FontName := frmConfig.pnlFontExDoc.Font.Name; //'Times New Roman';
cmbFontSize.ItemIndex := cmbFontSize.Items.IndexOf(IntToStr(frmConfig.pnlFontExDoc.Font.Size)); //'11');
end;
srvEditorCurrentPageChange(Self);
srvEditor.OnCaretMove := srvEditorCaretMove;
srvEditor.OnCaretMove(Self);
Busy := True;
pnlContainerMesaj.Constraints.MaxHeight := Height div 2 - 20;
SetRiglaUnits(False);
AddItemMenu(idChildUnic, Caption);
srvEditor.RichViewEdit.Delimiters := ' .;,:(){}"/\<>!?[]+*='#$91#$92#$93#$94#$A0#$84;
Show;
if frmMain.Showing then
srvEditor.SetFocus;
srvEditor.RichViewEdit.Modified := False;
srvEditor.RichViewEdit.ClearUndo;
Busy := False;
end;
Some of the code is specific to my program but hopefully that it will give you an idea about how it works.
I tried this first because it's not very easy to make a smaller program to reproduce the problem..
Posted: Sat Aug 22, 2009 2:04 pm
by Sergey Tkachenko
We found a bug in the ruler.
A quick fix:
unit: SclRVRuler.pas
procedure TSclRVRuler.DoMarginChanged;
line 567, change from
Code: Select all
if (RulerType = rtVertical) then
FSRichViewEdit.SetMargin(-1, FSRichViewEdit.TopMargin100Pix,
-1, FSRichViewEdit.BottomMargin100Pix)
else
FSRichViewEdit.SetMargin(FSRichViewEdit.LeftMargin100Pix, -1,
FSRichViewEdit.RightMargin100Pix, 1);
to
Code: Select all
if (RulerType = rtVertical) then
FSRichViewEdit.SetMargin(-1, FSRichViewEdit.TopMargin100Pix,
-1, FSRichViewEdit.BottomMargin100Pix)
else
FSRichViewEdit.SetMargin(FSRichViewEdit.LeftMargin100Pix, -1,
FSRichViewEdit.RightMargin100Pix, [color=red]-1[/color]);
Besides, change in your code:
Code: Select all
SclRVRuler1.Scrolled;
SclRVRuler2.Scrolled;
SclRVRuler1.DoMarginChanged;
to
Code: Select all
SclRVRuler1.CheckMargin;
SclRVRuler2.CheckMargin;
Posted: Sat Aug 22, 2009 2:48 pm
by Cosmin3
Yes, it works fine now
Thank you very much for the quick fix.
Best regards.
Posted: Mon Aug 24, 2009 9:49 am
by Cosmin3
A smaller problem: is it normal that at every use of srv.ScrollToCaret to show the ScrollHint..?
How can I deactivate it (without deactivating it at the use of Scrollbar)..?
Posted: Mon Aug 24, 2009 3:58 pm
by Sergey Tkachenko
A quick fix:
Unit: SclRView.pas
function TSRichViewEdit.ScrollToCaret: Boolean;
line: 10793
Change from
Code: Select all
HScrollPos := LeftItem - 1;
VScrollPos := (TopItem div FRichViewEdit.VSmallStep) - 1;
to
Code: Select all
fBusyScroll := True;
HScrollPos := LeftItem - 1;
VScrollPos := (TopItem div FRichViewEdit.VSmallStep) - 1;
fBusyScroll := False;
Posted: Mon Aug 24, 2009 5:02 pm
by Cosmin3
Thank you for this fix too..
Posted: Fri Oct 16, 2009 8:26 am
by Cosmin3
Hi.
I just found another problem: let's say I opened a document. I go with text cursor to the last visible text line in page and start pressing Down key. Every time I press the key the scroll hint appears.
Same thing happens when I go up.
It's annoying to see that scroll hint every time for those users who check dozens of text pages every day.
Less annoying but still.. is when you scroll the text with mouse wheel.
In both cases the scroll hint should be showed only (at most) when you enter in another page.
How can I solve these...?
Thank you in advance.
Posted: Tue Oct 20, 2009 7:35 pm
by Sergey Tkachenko
Confirmed. Will be fixed in the next update.
Posted: Sat Oct 31, 2009 9:04 am
by proxy3d
It is fixed in version SRV 2.5