Изменение размера формы блока и отображение подсказки при наведении курсора

#delphi #resize

#дельфи #изменить размер

Вопрос:

Delphi 11 Как сделать так, чтобы при наведении курсора на изменение размера формы появлялся крестик с какой-нибудь надписью типа: «Не изменять размер» и изменить размер формы было невозможно?

Мне нужно заблокировать изменение размера моей первой формы, когда я вызываю свою вторую форму. Я совсем новичок в Дельфи, не могли бы вы мне помочь, пожалуйста?

 procedure TForm1.Button1Click(Sender: TObject); begin  Form2.Show;  Form1.Caption:= 'Main';  Form1.BorderStyle:= bsSingle;  //And Form1.OnCanResize() or in some other way? end;  procedure TForm1.Button2Click(Sender: TObject); begin  Form1.Caption:= 'Main Form';  Form1.BorderStyle:= bsSizeable;  Form2.Hide; end;  

Ответ №1:

Вопрос решен.

«Если вам не нравится ответ, это не значит, что он неправильный. Но продолжайте удалять мои комментарии :)»

Это так печально, когда профессионалы не могут вам помочь, а только выражают высокомерие. Продолжай, ты такой забавный)

 procedure TForm1.Button1Click(Sender: TObject); begin  Form2.Show;  Form1.Caption:= 'Main';  Form1.BorderStyle:= bsSingle; end;  procedure TForm1.Button2Click(Sender: TObject); begin  Form1.Caption:= 'Main Form';  Form1.BorderStyle:= bsSizeable;  Form1.Cursor:= crDefault;  Form1.Hint:= '';  Form1.ShowHint:= False;  Form2.Hide; end;  procedure TForm1.Timer1Timer(Sender: TObject); //Interval = 1 var  pt: TPoint;  Width, Heigth: Integer; begin  GetCursorPos(pt);  if Form2.Visible then  begin  if (ScreenToClient(pt).X gt; ClientWidth - 10) or (ScreenToClient(pt).Y gt; ClientHeight - 10) then  begin  Cursor:= crNo;  Hint:= 'No resize';  ShowHint:= True;  end  else  begin  Cursor:= crDefault;  Hint:= '';  ShowHint:= False;  end;  end; end;  

Комментарии:

1. Таким образом, форма будет иметь подсказку «Без изменения размера» до конца своей жизни?

2. Не сама форма, ее граница и только тогда, когда видна форма 2*

3. Э-э… плохая идея, я вижу.

4. Если вы посмотрите на свои приложения Windows (Блокнот, Regedit, WordPad, Word, Excel, Internet Explorer, Firefox и т. Д.), Вы обнаружите, что очень редко окно с возможностью изменения размера превращается в окно без изменения размера. Я не думаю, что вы сможете найти ни одного примера такого окна, если вам разрешат искать его только один час! И, как я уже сказал, даже если это было бы разумно, отсутствие курсора изменения размера должно быть достаточно очевидным. Windows ведет себя так уже почти 30 лет. Вы также не найдете ни одного окна с курсором «нет» на границе размера!

5. Возможно, вы хотите заблокировать не только изменение размера вашей основной формы, но и всей формы? Это чрезвычайно распространенное явление. Хитрость здесь в том, чтобы показать вашу вторую форму модально : Form2.ShowModal вместо Form2.Show .