Изначальная позиция элемента C++ Builder
В форме имеется label1 (движущаяся надпись), которую пользователь может двигать на 5px вниз при наведении курсра. Требуется добавить кнопку, которая при событии onclick возращала бы label1 (движущаяся надпись) на ИСХОДНУЮ позицию.
Кнопку добавил, но не совсем понимаю, что нужно прописать в событии onlick (чтобы label1 приняла исходную позицию). Пробовал с помощью align, ничего не выходит.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Label1->Left=Label1->Left-5;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Label1->Left=Label1->Left+5;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Label1->Top=Label1->Top+5;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Label1->Top=Label1->Top+-5;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
Label1->Font->Color=clWindowText;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
Label1->Font->Color=clBlue;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton3Click(TObject *Sender)
{
Label1->Font->Color=clRed;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Label1->Caption=Edit1->Text;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1MouseMove(TObject *Sender, TShiftState Shift, int X,
int Y)
{
if(CheckBox1->Checked==true) {
Label1->Top=Label1->Top+5;
}
}
//---------------------------------------------------------------------------
Ответы (1 шт):
Что бы вернуть на исходную позицию, нужно ее знать. Попробуем самый простой вариант. Вначале нам нужно место, где эта позиция будет хранится. Не будет сильно хитрить, и возле TForm1 *Form1; добавим ещё пару строк
TForm1 *Form1;
int origin_top;
int origin_left;
потом в конструкторе инициализируем их
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
origin_top = Label1->Top;
origin_left = Label1->Left;
}
Теперь, можно написать код, который восстановит начальную позицию:
void __fastcall TForm1::ButtonXXXClick(TObject *Sender)
{
Label1->Top = origin_top ;
Label1->Left = origin_left;
}
Аналогичным образом можно "восстанавливать" и другие свойства.
Конечно, хорошо бы эти запомненные координаты сделать приватными переменными класса TForm1. Но это уже на домашнее задание.

