我使用Delphi 10,当我创建默认的vcl应用程序并运行应用程序时,我有两个显示器,主窗体总是出现在第一个监视器中,是否有办法让它在默认情况下显示在第二个监视器中?
这可能是IDE或属性或代码中的选项
由于
答案 0 :(得分:6)
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads'); // Absolute path. Folder must exist, will not be created for you.
},
filename: function (req, file, cb) {
var fileType = file.mimetype.split("/")[1];
var fileDestination = file.originalname + '-' + Date.now() + "." + fileType;
cb(null, fileDestination);
var map = new Map({
mapName: req.body.mapTitle,
mapImagePath: "./uploads/" + fileDestination,
ownerId: req.user._id
});
Map.createMap(map, function(err, map){
if(err)
next(err);
console.log(map);
});
}
});
var upload = multer({ storage: storage });
router.post('/', upload.single('mapImage'), function (req, res) {
res.status(200).send({
code: 200, success: "Map Created."
});
});
的{{3}}属性默认设置为TForm
。如果没有活动表单,则使用主监视器。但是,没有办法专门将dmActiveForm
设置为第二个监视器。
DefaultMonitor
也有DefaultMonitor
属性,但无论出于何种原因,它都是只读属性。
因此,要在特定监视器上显示TForm
,您可以在全局Monitor
列表中找到所需的监视器,然后执行以下任一操作:
手动将表单的TForm
/ Left
属性设置为监视器TScreen.Monitors[]
范围内的X / Y坐标或BoundsRect
财产。
将监视器传递给Form的公共WorkareaRect
方法。
答案 1 :(得分:2)
我有两个1600px宽度的显示器。我的主要监视器位于右侧,因此,为了在左侧放置一个表单,我将为其Left
属性传递负值。
procedure TForm1.Button1Click(Sender: TObject);
begin
// (3200 / 2 = + 1600) * -1 = -1600
Left := (Screen.DesktopWidth div 2) * -1;
end;
结果为-1600
,表示我的辅助显示器左侧最多。
您还可以通过调用Screen.Monitors[i].Left
获取每个监视器的“最左侧”位置,如下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
lMens: string;
begin
lMens := '';
for I := 0 to Screen.MonitorCount - 1 do
begin
lMens := lMens + ' | '
+ Format('%d - Left = %d', [i, Screen.Monitors[i].Left])
end;
ShowMessage(lMens);
end;
我希望帮助你。