ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Создание обьектов, изменение положения и размера обьектов [D7, Win]
  #1  
Старый 20.06.2007, 10:54
Exile1985
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме:
404152

Репутация: 94
По умолчанию Создание обьектов, изменение положения и размера обьектов [D7, Win]

Доброго всем времени суток!

Народ, у меня такой вопрос: допустим есть программа у которой две формы. 1-я форма - это меню и панель инстументов, на второй форме ничего нет, т.е. она полностью пустая.

у 1-й формы на панели инструментов есть к примеру кнопки c именами:
Button и Memo.

возможно ли сделать так чтобы при щелчке на кнопке с именем Button и последующем щелчке на форме в любом ее месте там появлялся бы компонент Button1, т.е. если говорить точнее возможно ли добовлять обьекты (Button, memo и тд) уже в работающей программе, что нибудь вроде:
Application.CreateButton (TButton1, Button1);

Пытался решить сам эту проблемму, была идея кинуть на форму TImage и в нее загружать только картинки обьектов а не создавать сами обьеты, а работать уже как бы с "реальными" обьектами, но тут опять проблемма, можно ли и главное как создать уже в работающей проге, заранее неизвестное количество обьектов TImage.


Второй вопрос заключается в том что, есть к примеру на форме кнопка (TButton или любой другой обьект) как можно сделать так чтобы при щелчке на этой кнопке, кнопка бы выделялась рамкой, так как это вы видите в делфи когда кидаете на форму кнопке и хотите изменить ее размеры или ее положение, в принципе для этих же целей я и ищу ответ на этот ворос.

Как изменить положение кнопки или ее размеры эт я знаю, но не удобно будет работать когда не знаешь какой обьект выделен.

надеюсь Вы мне поможете, я не прошу написать мне код, подскажите в каком направлении копать, что юзать с чем работать чтобы это реализовать.


Добавлено:

народ, с созданием обьектов в работающей проге уже разобрался, остальные вопросы остаются открытыми, в частности Как сделать рамку вокруг обьектов при щелчке левой кнопкой мыши на нем.

ЗЫ вот может кому пригодится, как создавать обьекты в рабоающей проге, например Button:


Код:
var
TempComponent:TButton;
begin
TempComponent:=TButton.Create(Form1);
TempComponent.Left:=10;
TempComponent.Top :=10;
TempComponent.Width := 120;
TempComponent.Height := 24;
Form1.InsertControl(TempComponent);
end;

Последний раз редактировалось Exile1985; 20.06.2007 в 11:37..
 
Ответить с цитированием

  #2  
Старый 21.06.2007, 10:07
Xserg
Участник форума
Регистрация: 09.12.2006
Сообщений: 135
Провел на форуме:
426226

Репутация: 726
По умолчанию

Тыкаем по Form DblClick
И редактируем размеры и положение кнопки
Еще раз тыкаем DblClick и используем кнопку как обычно
Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if tag=1 then begin
with Sender as Tcomponent do
 if tag=555 then begin
 with Sender as TButton do begin
 SetWindowLong(handle,GWL_STYLE,
 GetWindowLong(handle,GWL_STYLE)or WS_BORDER  or WS_SIZEBOX);
 ReleaseCapture;
 Perform(WM_SYSCOMMAND,SC_MOVE+2,0);
                          end;
                 end else begin
 for i:=0 to form1.ComponentCount-1 do
  if form1.Components[i].Tag=555 then
  with form1.Components[i] as TButton do begin
   SetWindowLong(handle,GWL_STYLE,
   GetWindowLong(handle,GWL_STYLE)and not(WS_BORDER  or WS_SIZEBOX));
   Visible:=false;Visible:=true; ; // так проще
                                       end; 
                          end;
               end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
// установка обработчика mousevent созданного компонента
Button1.Tag:=555;
Button1.OnMouseDown:=FormMouseDown;
end;

procedure TForm1.FormDblClick(Sender: TObject);
begin
// включение - выключение редактирования компонента
if Form1.Tag=0 then Form1.Tag:=1 else Form1.Tag:=0;
end;
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ