📄 mainfrm.pas
字号:
begin
Screen.Cursor := crHourGlass;
end;
procedure TfrmMain.BuildColorList;
var
I, J: Cardinal;
begin
// example of storing stuff in item's Data property
ITV3.Count := $3FFF;
Randomize;
for I := 0 to $3FFE do
begin
J := ($3FFE - I) + 500;
ITV3.Items[I].Data := Pointer(RGB(Random(J) mod 256, Random(J) mod 256, Random(J) mod 256));
end;
end;
procedure TfrmMain.DoITV2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
FDragIndex := ITV2.ItemAtPos(X, Y, True);
if FDragIndex > -1 then
ITV2.BeginDrag(False, 10);
end;
// ITV2.Invalidate;
end;
procedure TfrmMain.DoITV2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
//var
// I: Integer;
begin
Accept := Source = ITV2;
// I := ITV2.ItemAtPos(X, Y);
// if I > -1 then
// ITV2.SelectedIndex := I;
end;
procedure TfrmMain.DoITV2DragDrop(Sender, Source: TObject; X, Y: Integer);
var
I: Integer;
begin
I := ITV2.ItemAtPos(X, Y, False);
if I >= ITV2.Images.Count then
I := ITV2.Images.Count - 1;
if (I > -1) and (I <> FDragIndex) then
ITV2.Images.Move(FDragIndex, I);
ITV2.SelectedIndex := I;
end;
procedure TfrmMain.Reload1Click(Sender: TObject);
begin
if ITV.SelectedIndex >= 0 then
begin
ITV.Items[ITV.SelectedIndex].Picture := nil;
ITV.Invalidate;
end;
end;
procedure TfrmMain.DoITVDblClick(Sender: TObject);
begin
Viewfrompicture1Click(Sender);
end;
procedure TfrmMain.ViewItem(Item: TJvPictureItem; LoadFromFile: Boolean);
begin
if LoadFromFile and FileExists(Item.FileName) then
TfrmImageViewer.View(Item.FileName, ITV.Options.Transparent, ITV.Color)
else
TfrmImageViewer.View(Item.Picture, ITV.Options.Transparent, ITV.Color);
end;
procedure TfrmMain.Viewfromfile1Click(Sender: TObject);
var
Item: TJvPictureItem;
begin
if ITV.Focused and (ITV.SelectedIndex >= 0) then
begin
Item := ITV.Items[ITV.SelectedIndex];
ViewItem(Item, True);
end;
end;
procedure TfrmMain.Viewfrompicture1Click(Sender: TObject);
var
Item: TJvPictureItem;
begin
if ITV.Focused and (ITV.SelectedIndex >= 0) then
begin
Item := ITV.Items[ITV.SelectedIndex];
ViewItem(Item, False);
end;
end;
procedure TfrmMain.DoITVLoadProgress(Sender: TObject; Item: TJvPictureItem;
Stage: TProgressStage; PercentDone: Byte; RedrawNow: Boolean;
const R: TRect; const Msg: string);
begin
if PercentDone >= 100 then
StatusBar1.Panels[1].Text := ''
else
StatusBar1.Panels[1].Text := Format(' Loading "%s", %d%% done...', [Item.FileName, PercentDone]);
StatusBar1.Update;
end;
procedure TfrmMain.DoITVLoadEnd(Sender: TObject);
var
I: Integer;
begin
Screen.Cursor := crDefault;
pgViewersChange(Sender);
for I := 0 to ITV.Count - 1 do
if Assigned(ITV.Items[I].Picture) and Assigned(ITV.Items[I].Picture.Graphic) and
(ITV.Items[I].Picture.Graphic is TJvAni) then
TJvAni(ITV.Items[I].Picture.Graphic).Animated := True;
end;
procedure EnableControls(AControl: TControl; Enable: Boolean);
var
I: Integer;
begin
AControl.Enabled := Enable;
if AControl is TWinControl then
for I := 0 to TWinControl(AControl).ControlCount - 1 do
EnableControls(TWinControl(AControl).Controls[I], Enable);
end;
procedure TfrmMain.pgViewersChange(Sender: TObject);
begin
case pgViewers.ActivePageIndex of
0:
begin
EnableControls(pnlSettings, True);
Statusbar1.Panels[1].Text := ' Double-click to view full size, right-click for popup menu';
AInspector.InspectObject := ITV;
end;
1:
begin
EnableControls(pnlSettings, False);
Statusbar1.Panels[1].Text := ' Drag and drop images to rearrange';
AInspector.InspectObject := ITV2;
end;
2:
begin
EnableControls(pnlSettings, False);
Statusbar1.Panels[1].Text := ' Click color square to see its color value in status bar';
AInspector.InspectObject := ITV3;
end;
end;
end;
procedure TfrmMain.DoITV3Click(Sender: TObject);
begin
if (ITV3.SelectedIndex >= 0) and (ITV3.SelectedIndex < ITV3.Count) then
StatusBar1.Panels[0].Text := ColorToString(TColor(ITV3.Items[ITV3.SelectedIndex].Data));
end;
procedure TfrmMain.DoITV2GetCaption(Sender: TObject; ImageIndex: Integer;
var ACaption: WideString);
begin
if ITV2.Options.ShowCaptions then
begin
if Odd(ImageIndex) then
ACaption := Format('#%d', [ImageIndex])
else
ACaption := Format('$%x', [ImageIndex])
end;
end;
procedure TfrmMain.edDirectoryChange(Sender: TObject);
begin
if DirectoryExists(edDirectory.Text) then
btnUpdate.Click;
end;
procedure TfrmMain.Rename1Click(Sender: TObject);
var
S: string;
AItem: TJvPictureItem;
begin
if ITV.SelectedIndex < 0 then
Exit;
AItem := ITV.Items[ITV.SelectedIndex];
S := AItem.FileName;
if InputQuery('Rename', 'New name', S) and not AnsiSameText(AItem.FileName, S) then
begin
S := ExpandUNCFileName(S);
if RenameFile(ITV.ITems[ITV.SelectedIndex].FileName, S) then
begin
AItem.FileName := S;
AItem.Caption := ExtractFileName(S);
end
else
ShowMessage('Could not rename file!');
end;
end;
procedure TfrmMain.Delete1Click(Sender: TObject);
var
AItem: TJvPictureItem;
begin
if ITV.SelectedIndex < 0 then
Exit;
if MessageDlg('Are you sure you want to delete the selected file?',
mtConfirmation, [mbYes, mbNo], 0) = mrYEs then
begin
AItem := ITV.Items[ITV.SelectedIndex];
if not DeleteFile(AItem.FileName) then
ShowMessage('Could not delete the file!')
else
AItem.Delete;
end;
end;
procedure TfrmMain.chkDisconnectClick(Sender: TObject);
begin
if chkDisconnect.Checked then
begin
AInspector.InspectObject := nil;
AInspector.Visible := False;
end
else
begin
AInspector.Visible := True;
pgViewersChange(Sender);
end;
end;
procedure TfrmMain.SetDisplayDragImage(AControl: TControl);
var
I: Integer;
begin
AControl.ControlStyle := AControl.ControlStyle + [csDisplayDragImage];
if AControl is TWinControl then
for I := 0 to TWinControl(AControl).ControlCOunt - 1 do
SetDisplayDragImage(TWinControl(AControl).Controls[I]);
end;
procedure TfrmMain.SelectAll1Click(Sender: TObject);
begin
ITV.SelectAll;
end;
procedure TfrmMain.DoITV3ItemHint(Sender: TObject; Index: Integer;
var HintInfo: THintInfo; var Handled: Boolean);
var
AColor: TColor;
begin
AColor := TColor(ITV3.Items[Index].Data);
HintInfo.HintColor := AColor;
HintInfo.HintStr := ColorToString(AColor);
Handled := true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -