代码之家  ›  专栏  ›  技术社区  ›  relayman357

窗体位置/大小fmx-win32

  •  0
  • relayman357  · 技术社区  · 6 年前

    我正在用C++Builder为Win32构建一个FMX应用程序(仅一种形式)。我想让程序记住它的窗体在用户屏幕上的位置,以及下次用户运行它时的大小(它可以调整大小)。

    有人能给我指个方向吗?

    谢谢, 雷雷曼

    更新:谢谢萨姆。我按照你说的做了,但是把位置信息写进了一个sqlite数据库,而不是文本文件。数据库有一个名为“pos”的表,其中有5个整型字段。4是职位,1被命名为“item”,只是为了方便我的更新查询(从长远来看我不是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();
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Sam    6 年前

    一旦关闭,保存位置、高度、状态…到一个ini文件中。一旦创建,恢复所有信息