page setup problem
page setup problem
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.
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.
Last edited by Cosmin3 on Sat Aug 22, 2009 1:30 pm, edited 1 time in total.
-
- Site Admin
- Posts: 17564
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
We tried to reproduce this bug in the following code:
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?
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;
Probably some other code resets margins. Can you send a project reproducing this problem to Ilya?
My code is:
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..
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;
I tried this first because it's not very easy to make a smaller program to reproduce the problem..
-
- Site Admin
- Posts: 17564
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
We found a bug in the ruler.
A quick fix:
unit: SclRVRuler.pas
procedure TSclRVRuler.DoMarginChanged;
line 567, change from
to
Besides, change in your code:
to
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);
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]);
Code: Select all
SclRVRuler1.Scrolled;
SclRVRuler2.Scrolled;
SclRVRuler1.DoMarginChanged;
Code: Select all
SclRVRuler1.CheckMargin;
SclRVRuler2.CheckMargin;
-
- Site Admin
- Posts: 17564
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
A quick fix:
Unit: SclRView.pas
function TSRichViewEdit.ScrollToCaret: Boolean;
line: 10793
Change from
to
Unit: SclRView.pas
function TSRichViewEdit.ScrollToCaret: Boolean;
line: 10793
Change from
Code: Select all
HScrollPos := LeftItem - 1;
VScrollPos := (TopItem div FRichViewEdit.VSmallStep) - 1;
Code: Select all
fBusyScroll := True;
HScrollPos := LeftItem - 1;
VScrollPos := (TopItem div FRichViewEdit.VSmallStep) - 1;
fBusyScroll := False;
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.
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.
-
- Site Admin
- Posts: 17564
- Joined: Sat Aug 27, 2005 10:28 am
- Contact: