📄 jvoutlookbar.pas
字号:
begin
if FImageIndex <> Value then
begin
FImageIndex := Value;
Change;
end;
end;
procedure TJvOutlookBarButton.SetDown(const Value: Boolean);
var
I: Integer;
begin
if Value <> FDown then
begin
FDown := Value;
if FDown then
for I := 0 to TJvOutlookBarButtons(Collection).Count - 1 do
if TJvOutlookBarButtons(Collection).Items[I] <> Self then
TJvOutlookBarButtons(Collection).Items[I].Down := False;
Change;
end;
end;
procedure TJvOutlookBarButton.SetEnabled(const Value: Boolean);
begin
if FEnabled <> Value then
begin
FEnabled := Value;
Change;
end;
end;
procedure TJvOutlookBarButton.Click;
begin
if Assigned(FOnClick) then
FOnClick(Self);
end;
function TJvOutlookBarButton.GetAction: TBasicAction;
begin
if FActionLink <> nil then
Result := FActionLink.Action
else
Result := nil;
end;
function TJvOutlookBarButton.GetActionLinkClass: TJvOutlookBarButtonActionLinkClass;
begin
Result := TJvOutlookBarButtonActionLink;
end;
procedure TJvOutlookBarButton.ActionChange(Sender: TObject;
CheckDefaults: Boolean);
begin
if Sender is TCustomAction then
with TCustomAction(Sender) do
begin
if not CheckDefaults or (Self.Caption = '') then
Self.Caption := Caption;
if not CheckDefaults or Self.Enabled then
Self.Enabled := Enabled;
if not CheckDefaults or (Self.ImageIndex = -1) then
Self.ImageIndex := ImageIndex;
if not CheckDefaults or not Assigned(Self.OnClick) then
Self.OnClick := OnExecute;
end;
end;
procedure TJvOutlookBarButton.DoActionChange(Sender: TObject);
begin
if Sender = Action then
ActionChange(Sender, False);
end;
type
THackOwnedCollection = class(TOwnedCollection);
procedure TJvOutlookBarButton.SetAction(Value: TBasicAction);
begin
if Value = nil then
begin
FActionLink.Free;
FActionLink := nil;
end
else
begin
if FActionLink = nil then
FActionLink := GetActionLinkClass.Create(Self);
FActionLink.Action := Value;
FActionLink.OnChange := DoActionChange;
ActionChange(Value, csLoading in Value.ComponentState);
if GetOutlookBar <> nil then
Value.FreeNotification(GetOutlookBar); // delegates notification to owner!
end;
end;
function TJvOutlookBarButton.GetOutlookBar: TJvCustomOutlookBar;
begin
if TJvOutlookBarButtons(Collection).Owner is TJvOutlookBarPage then
Result := TJvOutlookBarPage(TJvOutlookBarButtons(Collection).Owner).GetOutlookBar
else
Result := nil;
end;
//=== { TJvOutlookBarButtons } ===============================================
constructor TJvOutlookBarButtons.Create(AOwner: TPersistent);
begin
inherited Create(AOwner, TJvOutlookBarButton);
end;
function TJvOutlookBarButtons.Add: TJvOutlookBarButton;
begin
Result := TJvOutlookBarButton(inherited Add);
end;
procedure TJvOutlookBarButtons.Assign(Source: TPersistent);
var
I: Integer;
begin
if Source is TJvOutlookBarButtons then
begin
BeginUpdate;
try
Clear;
for I := 0 to TJvOutlookBarButtons(Source).Count - 1 do
Add.Assign(TJvOutlookBarButtons(Source)[I]);
finally
EndUpdate;
end;
end
else
inherited Assign(Source);
end;
function TJvOutlookBarButtons.GetItem(Index: Integer): TJvOutlookBarButton;
begin
Result := TJvOutlookBarButton(inherited Items[Index]);
end;
{$IFDEF COMPILER5}
function TJvOutlookBarButtons.Owner: TPersistent;
begin
Result := GetOwner;
end;
{$ENDIF COMPILER5}
function TJvOutlookBarButtons.Insert(Index: Integer): TJvOutlookBarButton;
begin
Result := TJvOutlookBarButton(inherited Insert(Index));
end;
procedure TJvOutlookBarButtons.SetItem(Index: Integer;
const Value: TJvOutlookBarButton);
begin
inherited Items[Index] := Value;
end;
procedure TJvOutlookBarButtons.Update(Item: TCollectionItem);
begin
inherited Update(Item);
if Owner <> nil then
TJvOutlookBarPage(Owner).Changed(False);
end;
//=== { TJvOutlookBarPage } ==================================================
constructor TJvOutlookBarPage.Create(Collection: TCollection);
begin
inherited Create(Collection);
FFont := TFont.Create;
FFont.OnChange := DoFontChange;
FDownFont := TFont.Create;
FDownFont.OnChange := DoFontChange;
FParentColor := True;
FPicture := TPicture.Create;
FPicture.OnChange := DoPictureChange;
FAlignment := taCenter;
FImageIndex := -1;
FEnabled := True;
FButtons := TJvOutlookBarButtons.Create(Self);
if (Collection <> nil) and (TJvOutlookBarPages(Collection).Owner <> nil) then
begin
FButtonSize := TJvCustomOutlookBar(TJvOutlookBarPages(Collection).Owner).ButtonSize;
// FColor := TJvCustomOutlookBar(TJvOutlookBarPages(Collection).Owner).Color;
Font := TJvCustomOutlookBar(TJvOutlookBarPages(Collection).Owner).Font;
DownFont := Font;
end
else
begin
FButtonSize := olbsLarge;
end;
FColor := clDefault;
Font.Color := clWhite;
FParentButtonSize := True;
end;
destructor TJvOutlookBarPage.Destroy;
begin
FButtons.Free;
FPicture.Free;
FFont.Free;
FDownFont.Free;
inherited Destroy;
end;
procedure TJvOutlookBarPage.Assign(Source: TPersistent);
var
I: Integer;
begin
if Source is TJvOutlookBarPage then
begin
Caption := TJvOutlookBarPage(Source).Caption;
Picture := TJvOutlookBarPage(Source).Picture;
Color := TJvOutlookBarPage(Source).Color;
DownFont.Assign(TJvOutlookBarPage(Source).DownFont);
ButtonSize := TJvOutlookBarPage(Source).ButtonSize;
ParentButtonSize := TJvOutlookBarPage(Source).ParentButtonSize;
ParentColor := TJvOutlookBarPage(Source).ParentColor;
Enabled := TJvOutlookBarPage(Source).Enabled;
Buttons.Clear;
for I := 0 to TJvOutlookBarPage(Source).Buttons.Count - 1 do
Buttons.Add.Assign(TJvOutlookBarPage(Source).Buttons[I]);
Change;
end
else
inherited Assign(Source);
end;
procedure TJvOutlookBarPage.Change;
begin
if (Collection <> nil) and (TJvOutlookBarPages(Collection).UpdateCount = 0) then
TJvOutlookBarPages(Collection).Update(Self);
end;
procedure TJvOutlookBarPage.SetTopButtonIndex(const Value: Integer);
begin
if (FTopButtonIndex <> Value) and (Value >= 0) and (Value < Buttons.Count) then
begin
FTopButtonIndex := Value;
Change;
end;
end;
procedure TJvOutlookBarPage.SetButtons(const Value: TJvOutlookBarButtons);
begin
FButtons.Assign(Value);
Change;
end;
procedure TJvOutlookBarPage.SetCaption(const Value: TCaption);
begin
if FCaption <> Value then
begin
FCaption := Value;
Change;
end;
end;
procedure TJvOutlookBarPage.SetButtonSize(const Value: TJvBarButtonSize);
begin
if FButtonSize <> Value then
begin
FButtonSize := Value;
if not (csReading in TComponent(TJvOutlookBarPages(Collection).Owner).ComponentState) then
FParentButtonSize := False;
Change;
end;
end;
procedure TJvOutlookBarPage.SetColor(const Value: TColor);
begin
if FColor <> Value then
begin
FColor := Value;
FParentColor := False;
Change;
end;
end;
procedure TJvOutlookBarPage.SetFont(const Value: TFont);
begin
FFont.Assign(Value);
FParentFont := False;
end;
procedure TJvOutlookBarPage.SetEnabled(const Value: Boolean);
begin
if FEnabled <> Value then
begin
FEnabled := Value;
Change;
end;
end;
procedure TJvOutlookBarPage.SetPicture(const Value: TPicture);
begin
FPicture.Assign(Value);
end;
procedure TJvOutlookBarPage.SetParentButtonSize(const Value: Boolean);
begin
if FParentButtonSize <> Value then
begin
FParentButtonSize := Value;
if Value then
begin
FButtonSize := (TJvOutlookBarPages(Collection).Owner as TJvCustomOutlookBar).ButtonSize;
Change;
end;
end;
end;
procedure TJvOutlookBarPage.SetParentColor(const Value: Boolean);
begin
if FParentColor <> Value then
begin
FParentColor := Value;
if Value then
begin
FColor := (TJvOutlookBarPages(Collection).Owner as TJvCustomOutlookBar).Color;
Change;
end;
end;
end;
procedure TJvOutlookBarPage.SetParentFont(const Value: Boolean);
begin
if FParentFont <> Value then
begin
if Value then
Font := (TJvOutlookBarPages(Collection).Owner as TJvCustomOutlookBar).Font;
FParentFont := Value;
end;
end;
procedure TJvOutlookBarPage.EditCaption;
begin
SendMessage(TCustomControl(TJvOutlookBarPages(Collection).Owner).Handle, CM_CAPTION_EDITING, Integer(Self), 1);
end;
function TJvOutlookBarPage.GetDisplayName: string;
begin
if Caption <> '' then
Result := Caption
else
Result := inherited GetDisplayName;
end;
function TJvOutlookBarPage.GetOutlookBar: TJvCustomOutlookBar;
begin
if TJvOutlookBarPages(Collection).Owner is TJvCustomOutlookBar then
Result := TJvCustomOutlookBar(TJvOutlookBarPages(Collection).Owner)
else
Result := nil;
end;
procedure TJvOutlookBarPage.SetImageIndex(const Value: TImageIndex);
begin
if FImageIndex <> Value then
begin
FImageIndex := Value;
Change;
end;
end;
procedure TJvOutlookBarPage.SetAlignment(const Value: TAlignment);
begin
if FAlignment <> Value then
begin
FAlignment := Value;
Change;
end;
end;
procedure TJvOutlookBarPage.SetDownFont(const Value: TFont);
begin
if Value <> FDownFont then
FDownFont.Assign(Value);
end;
procedure TJvOutlookBarPage.DoFontChange(Sender: TObject);
begin
Change;
if Sender <> FDownFont then
FParentFont := False;
end;
function TJvOutlookBarPage.GetDownButton: TJvOutlookBarButton;
var
Index: Integer;
begin
Index := DownIndex;
if Index <> -1 then
Result := Buttons[Index]
else
Result := nil;
end;
procedure TJvOutlookBarPage.SetDownButton(Value: TJvOutlookBarButton);
begin
if Value = nil then
DownIndex := -1
else
DownIndex := Value.Index;
end;
function TJvOutlookBarPage.GetDownIndex: Integer;
begin
for Result := 0 to Buttons.Count - 1 do
if Buttons[Result].Down then
Exit;
Result := -1;
end;
procedure TJvOutlookBarPage.SetDownIndex(Value: Integer);
begin
if (Value >= 0) and (Value < Buttons.Count) then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -