【发布时间】:2018-11-30 18:55:48
【问题描述】:
我正在使用 C++ Builder 为 Win32(仅一种形式)构建 FMX 应用程序。我希望程序记住它的表单在用户屏幕上的位置以及用户下次运行它的大小(可调整大小)。
有人能指出正确的方向吗?
谢谢, 接力人
更新:谢谢山姆。我按照你说的做了,但将位置信息写入 SQLite 数据库而不是文本文件。 db 有一个名为“pos”的表,其中包含 5 个整数字段。 4 是位置,1 被命名为“项目”,只是为了方便我的更新查询(我不是 sql 专家)。请注意,下面的代码需要 try/catch 改进和一些测试以确保表单坐标有效。
这段代码的形式是 OnShow 事件:
TFDQuery *query2;
query2 = new TFDQuery(NULL);
query2->Connection = Form1->FDConnection1;
query2->SQL->Text = "SELECT * FROM pos";
query2->Open();
Form1->Left = query2->FieldByName("left")->AsInteger;
Form1->Top = query2->FieldByName("top")->AsInteger;
Form1->Width = query2->FieldByName("width")->AsInteger;
Form1->Height = query2->FieldByName("height")->AsInteger;
query2->Close();
query2->DisposeOf();
这段代码的形式是 OnClose 事件:
TFDQuery *queryUPDATE;
queryUPDATE = new TFDQuery(NULL);
queryUPDATE->Connection = Form1->FDConnection1;
queryUPDATE->SQL->Text = "UPDATE pos set left = '" + IntToStr(Form1->Left) + "', top = '" + IntToStr(Form1->Top) + "', width = '" + IntToStr(Form1->Width) + "', heigth = '" + IntToStr(Form1->Height) + "' WHERE item = '1'";
queryUPDATE->ExecSQL();
queryUPDATE->Close();
queryUPDATE->DisposeOf();
【问题讨论】:
标签: firemonkey c++builder