Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2011, 17:21   #11
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от asmodey1 Посмотреть сообщение
А если не теоретизировать, а попробовать ?
Я вот попробовал... И получил абстрактную ошибку.
Но вы упирайтесь рогом дальше. Доказывайте псевдоправоту...
Не знаю как вы рога у форумчан обнаруживаете, но у меня без ошибок работает.
vovk вне форума Ответить с цитированием
Старый 20.01.2011, 17:26   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
procedure TMButton.Click;
begin
  inherited click; //базовое действие с обращением к нашему Onclick где есть Free
  Canvas.Drawrect;//код остался на месте продолжаем работу и получаем ......
end;
вообще это кривость, ибо оно в конце должно быть, а не в начале.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.01.2011, 17:31   #13
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от asmodey1
А если не теоретизировать, а попробовать ?
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Sender.Free;
end;
Работает без ошибок. И чё?
Цитата:
Я вот попробовал... И получил абстрактную ошибку.
Код и сообщение ошибки плиз
Цитата:
Но вы упирайтесь рогом дальше. Доказывайте псевдоправоту...
У меня, знаете, рогов нет, чтобы ими упираться. Вам что не нравится принцип дискуссионного общения форумов? Хотите поговорить об этом?
Sibedir вне форума Ответить с цитированием
Старый 20.01.2011, 17:53   #14
WhiteSpirit
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 82
По умолчанию

Попробовал сделать такую штуку
Код:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure btClick(Sender: TObject);
  end;

var
  Form1: TForm1;
  Counter: Integer = 0;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Inc(Counter);
with TButton.Create(Self) do begin
    Caption:=IntToStr(Counter);
    Parent:=Self;
    Top:=(Counter - 1) * 40;
    OnClick:=btClick;
    end;
end;

procedure TForm1.btClick(Sender: TObject);
begin
Sender.Free;
end;
То есть, по клику на Button1 создаются новые кнопки и располагаются в столбик. Получилось вот что: если нажимать на эти кнопки последовательно, начиная с последней, то всё нормально, в других случаях - ошибка
WhiteSpirit вне форума Ответить с цитированием
Старый 20.01.2011, 19:01   #15
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Не поленился, проверил. В Дельфи с 4 по 7 падает независимо от того, в какой последовательности удалять кнопки. Хоть с последней, хоть с первой. В 2005 не проверял. В 2006 и дальше ничего не падает, кнопки можно удалять в любой последовательности.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 20.01.2011, 19:07   #16
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
const 
  WM_DELETEBUTTON = WM_USER + 1 ;

type
  TForm1 = class(TForm)
    ...
  public
    { Public declarations }
    procedure btClick(Sender: TObject);
    procedure WmDeleteButton (var M: TMessage ); message WM_DELETEBUTTON;
  end;

...

implementation

...

procedure TForm1.btClick(Sender: TObject);
begin
  PostMessage (Handle, WM_DELETEBUTTON, Integer (Sender), 0);
end;

procedure TForm1.WmDeleteButton(var M: TMessage);
begin
  TButton(M.WParam).Free;
end;
Ичточник http://www.sql.ru/forum/actualthread.aspx?tid=130035
Sibedir вне форума Ответить с цитированием
Старый 20.01.2011, 19:17   #17
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Именно то, о чём давно сказал mss, и без всяких таймеров.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 21.01.2011, 01:11   #18
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Цитата:
Сообщение от WhiteSpirit Посмотреть сообщение
Попробовал сделать такую штуку
...
То есть, по клику на Button1 создаются новые кнопки и располагаются в столбик. Получилось вот что: если нажимать на эти кнопки последовательно, начиная с последней, то всё нормально, в других случаях - ошибка
Да, у меня было то же самое, с точностью до наоборот. Если удалять с последней, то всё ок, наоборот же выскакивали разные ошибки.

Цитата:
Сообщение от veniside Посмотреть сообщение
Не поленился, проверил. В Дельфи с 4 по 7 падает независимо от того, в какой последовательности удалять кнопки. Хоть с последней, хоть с первой. В 2005 не проверял. В 2006 и дальше ничего не падает, кнопки можно удалять в любой последовательности.
А вот это уже интересней, попробую перенести код на новую делфи, если всё так, спасибо :-)

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Код:
const 
  WM_DELETEBUTTON = WM_USER + 1 ;

type
  TForm1 = class(TForm)
    ...
  public
    { Public declarations }
    procedure btClick(Sender: TObject);
    procedure WmDeleteButton (var M: TMessage ); message WM_DELETEBUTTON;
  end;

...

implementation

...

procedure TForm1.btClick(Sender: TObject);
begin
  PostMessage (Handle, WM_DELETEBUTTON, Integer (Sender), 0);
end;

procedure TForm1.WmDeleteButton(var M: TMessage);
begin
  TButton(M.WParam).Free;
end;
Ичточник http://www.sql.ru/forum/actualthread.aspx?tid=130035
Большое спасибо! Попробую этот код, он даже сможет упростить всё.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.

Последний раз редактировалось Stilet; 22.01.2011 в 13:57.
NoName_emaNoN вне форума Ответить с цитированием
Старый 21.01.2011, 01:42   #19
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Именно то, о чём давно сказал mss, и без всяких таймеров.
Блин, пропустил. mss +1
Sibedir вне форума Ответить с цитированием
Старый 21.01.2011, 01:58   #20
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

Button1.Destroy; - тупой вариант
dosha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при нажатии на кнопку Delete vik85 Помощь студентам 0 20.12.2009 20:34
Скрытие интерфейса при нажатии на кнопку kostghost Общие вопросы Delphi 3 28.08.2009 11:10
прокрутка при нажатии на кнопку neformat JavaScript, Ajax 0 20.06.2008 20:40
При нажатии на кнопку добавить в PageControl VenMaster Компоненты Delphi 5 25.04.2008 01:41
Загрузка файла при нажатии на кнопку Simply-Art Общие вопросы Delphi 15 23.01.2007 14:00