📄 pararvfrm.pas
字号:
procedure TfrmRVPara.FormActivate(Sender: TObject);
begin
inherited;
UpdateSample;
end;
procedure TfrmRVPara.SetTabs(Value: TRVTabInfos);
begin
FTabs.Assign(Value);
UpdateTabList(-1);
lstTabsClick(nil);
end;
procedure TfrmRVPara.UpdateTabList(NewIndex: Integer);
var i: Integer;
bmp: TBitmap;
begin
ClearXBoxItems(_lstTabs);
ilListTabs.Clear;
ilListTabs.AllocBy := Tabs.Count;
for i := 0 to Tabs.Count-1 do begin
XBoxItemsAddObject(_lstTabs, IntToStr(Tabs[i].Position), nil);
bmp := TBitmap.Create;
ilSmallTabs.GetBitmap(ord(Tabs[i].Align), bmp);
ilListTabs.AddMasked(bmp, bmp.Canvas.Pixels[0,0]);
bmp.Free;
end;
_btnDeleteAll.Enabled := (Tabs.Count>0) or not DeleteAllTabs;
if NewIndex>=0 then
SetXBoxItemIndex(_lstTabs, NewIndex)
else if seTabPos.Indeterminate and (Tabs.Count>0) then
SetXBoxItemIndex(_lstTabs, 0)
else
SetXBoxItemIndex(_lstTabs, Tabs.Find(seTabPos.AsInteger));
end;
procedure TfrmRVPara.Localize;
begin
inherited;
Caption := {$IFDEF USERVTNT}_GetWideString{$ENDIF}(RVA_GetS(rvam_par_Title));
btnOk.Caption := RVA_GetS(rvam_btn_OK);
btnCancel.Caption := RVA_GetS(rvam_btn_Cancel);
gbAlignment.Caption := RVA_GetSH(rvam_par_Alignment);
gbAlignment.Items[0].Caption := RVA_GetS(rvam_par_AlLeft);
gbAlignment.Items[1].Caption := RVA_GetS(rvam_par_AlRight);
gbAlignment.Items[2].Caption := RVA_GetS(rvam_par_AlCenter);
gbAlignment.Items[3].Caption := RVA_GetS(rvam_par_AlJustify);
gbSpacing.Caption := RVA_GetSH(rvam_par_Spacing);
lblBefore.Caption := RVA_GetS(rvam_par_Before);
lblAfter.Caption := RVA_GetS(rvam_par_After);
lblLineSpacing.Caption := RVA_GetS(rvam_par_LineSpacing);
lblBy.Caption := RVA_GetS(rvam_par_By);
gbIndents.Caption := RVA_GetSH(rvam_par_Indents);
lblLeft.Caption := RVA_GetS(rvam_par_Left);
lblRight.Caption := RVA_GetS(rvam_par_Right);
lblFirstLine.Caption := RVA_GetS(rvam_par_FirstLine);
rbNegative.Caption := RVA_GetS(rvam_par_Hanging);
rbPositive.Caption := RVA_GetS(rvam_par_Indented);
gbSample.Caption := RVA_GetSH(rvam_par_Sample);
cmbLineSpacing.Items[0] := RVA_GetS(rvam_par_LS_100);
cmbLineSpacing.Items[1] := RVA_GetS(rvam_par_150);
cmbLineSpacing.Items[2] := RVA_GetS(rvam_par_200);
cmbLineSpacing.Items[3] := RVA_GetS(rvam_par_Multiple);
rvs.TextStyles[0].Charset := RVA_GetCharset;
rvs.TextStyles[1].Charset := RVA_GetCharset;
ts1.Caption := RVA_GetSH(rvam_par_MainTab);
ts2.Caption := RVA_GetSH(rvam_par_TabsTab);
ts3.Caption := RVA_GetSH(rvam_par_TextFlowTab);
lblTabPos.Caption := RVA_GetS(rvam_par_TabStopPos);
rgTabAlign.Caption := RVA_GetSH(rvam_par_TabAlign);
rgTabAlign.Items[0].Caption := RVA_GetS(rvam_par_TabAlignLeft);
rgTabAlign.Items[1].Caption := RVA_GetS(rvam_par_TabAlignRight);
rgTabAlign.Items[2].Caption := RVA_GetS(rvam_par_TabAlignCenter);
rgLeader.Caption := RVA_GetSH(rvam_par_Leader);
rgLeader.Items[0] := RVA_GetS(rvam_par_LeaderNone);
lblDelTabs.Caption := RVA_GetS(rvam_par_TabsToBeDeleted);
lblDelTabList.Caption := RVA_GetS(rvam_par_TabDelNone);
btnDelete.Caption := RVA_GetS(rvam_par_Delete);
btnDeleteAll.Caption := RVA_GetS(rvam_par_DeleteAll);
btnSet.Caption := RVA_GetS(rvam_par_btnSet);
gbPagination.Caption := RVA_GetSH(rvam_par_Pagination);
cbKeepLinesTogether.Caption := RVA_GetS(rvam_par_KeepLinesTogether);
cbKeepWithNext.Caption := RVA_GetS(rvam_par_KeepWithNext);
end;
{$IFDEF RVASKINNED}
procedure TfrmRVPara.OnCreateThemedControl(OldControl,
NewControl: TControl);
begin
if OldControl = _cmbLineSpacing then
_cmbLineSpacing := NewControl
{$IFDEF USERVTNT}
else if OldControl = pc then
_ts2 := TTntPageControl(NewControl).Pages[1]
{$ENDIF}
{$IFDEF USERVKSDEVTE}
else if OldControl = pc then
_ts2 := TTePageControl(NewControl).Pages[1]
{$ENDIF}
else if OldControl = _cbKeepWithNext then
_cbKeepWithNext := NewControl
else if OldControl = _cbKeepLinesTogether then
_cbKeepLinesTogether := NewControl
else if OldControl = _rgLeader then
_rgLeader := NewControl
else if OldControl = _btnSet then
_btnSet := NewControl
else if OldControl = _btnDelete then
_btnDelete := NewControl
else if OldControl = _btnDeleteAll then
_btnDeleteAll := NewControl
else if OldControl = _lblDelTabList then
_lblDelTabList := NewControl
else if OldControl = _lstTabs then begin
_lstTabs := NewControl;
{$IFDEF USERVKSDEVTE}
TteListBox(_lstTabs).Images := ilListTabs;
{$ENDIF}
end;
end;
{$ENDIF}
procedure TfrmRVPara.DrawTabItem(Canvas: TCanvas; Index: Integer; R: TRect;
Selected: Boolean);
begin
if Selected then begin
Canvas.Font.Color := clHighlightText;
Canvas.Brush.Color := clHighlight;
end
else begin
Canvas.Font.Color := clWindowText;
Canvas.Brush.Color := clWindow;
end;
Canvas.FillRect(R);
ilSmallTabs.Draw(Canvas, R.Left+2, (R.Top+R.Bottom-ilSmallTabs.Height) div 2,
ord(FTabs[Index].Align));
inc(R.Left, 4+ilSmallTabs.Width);
DrawText(Canvas.Handle, PChar(IntToStr(FTabs[Index].Position)), -1, R,
DT_SINGLELINE or DT_VCENTER);
end;
procedure TfrmRVPara.lstTabsDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
DrawTabItem(lstTabs.Canvas, Index, Rect, odSelected in State);
end;
procedure TfrmRVPara.lstTabsClick(Sender: TObject);
var idx,i,ldr: Integer;
s: String;
ss: TStringList;
begin
idx := GetXBoxItemIndex(_lstTabs);
if idx<0 then
exit;
DoNotResetLeader := True;
seTabPos.Value := FTabs[idx].Position;
DoNotResetLeader := False;
rgTabAlign.ItemIndex := ord(FTabs[idx].Align);
s := Tabs[idx].Leader;
if s='' then
ldr := 0
else begin
ldr := -1;
ss := CreateXBoxItemsCopy(_rgLeader);
try
for i := 1 to ss.Count-1 do
if s=ss[i][5] then begin
ldr := i;
break;
end;
finally
ss.Free;
end;
end;
SetXBoxItemIndex(_rgLeader, ldr);
_btnSet.Enabled := True;
_btnDelete.Enabled := True;
end;
procedure TfrmRVPara.seTabPosChange(Sender: TObject);
begin
_btnSet.Enabled := not seTabPos.Indeterminate;
_btnDelete.Enabled := not seTabPos.Indeterminate;
if not DoNotResetLeader then
SetXBoxItemIndex(_rgLeader, 0);
end;
procedure TfrmRVPara.btnDeleteAllClick(Sender: TObject);
begin
TabsModified := True;
DeleteAllTabs := True;
UpdateDelTabList;
FTabs.Clear;
UpdateTabList(-1);
end;
procedure TfrmRVPara.UpdateDelTabList;
var i: Integer;
s: String;
begin
if DeleteAllTabs then
s := RVA_GetS(rvam_par_TabDelAll)
else if FTabsToDelete.Count=0 then
s := RVA_GetS(rvam_par_TabDelNone)
else begin
s := '';
for i := 0 to FTabsToDelete.Count-2 do
s := s+IntToStr(FTabsToDelete[i])+'; ';
s := s+IntToStr(FTabsToDelete[FTabsToDelete.Count-1])+'.';
end;
SetControlCaption(_lblDelTabList, s);
end;
procedure TfrmRVPara.btnDeleteClick(Sender: TObject);
var p,idx: Integer;
begin
if seTabPos.Indeterminate then begin
Beep;
exit;
end;
TabsModified := True;
p := seTabPos.AsInteger;
if not DeleteAllTabs then begin
FTabsToDelete.AddUnique(p);
FTabsToDelete.Sort;
UpdateDelTabList;
end;
idx := Tabs.Find(p);
if idx>=0 then
Tabs[idx].Free;
if idx>=Tabs.Count then
dec(idx);
UpdateTabList(idx);
lstTabsClick(nil);
end;
procedure TfrmRVPara.btnSetClick(Sender: TObject);
var p,idx: Integer;
tab: TRVTabInfo;
SL: TStringList;
begin
if seTabPos.Indeterminate then begin
Beep;
exit;
end;
TabsModified := True;
p := seTabPos.AsInteger;
idx := Tabs.Find(p);
if idx<0 then begin
Tabs.Add;
idx := Tabs.Count-1;
end;
tab := Tabs[idx];
if rgTabAlign.ItemIndex>=0 then
tab.Align := TRVTabAlign(rgTabAlign.ItemIndex);
if GetXBoxItemIndex(_rgLeader) in [1..4] then begin
SL := CreateXBoxItemsCopy(_rgLeader);
tab.Leader := SL[GetXBoxItemIndex(_rgLeader)][5];
SL.Free;
end
else
tab.Leader := '';
tab.Position := seTabPos.AsInteger;
UpdateTabList(tab.Index);
lstTabsClick(nil);
end;
procedure TfrmRVPara.HideTabsPage;
begin
HideTabSheet(_ts2);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -