Как сгенерировать событие?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Лекс Айрин писал(а):Если не переделывать старый код, то новый так же будет набором велосипедов, палок и гуано. И не считай это убытком. Это скорее практикум, польза от которого видна не сразу.

Время не резиновое. Пока ты будешь пытать добиться идеального форматирования исходников, говнокод захватит ресурсы и станет стандартом.
Ну тогда у тебя только один выход

Забить :mrgreen: У большинства отобразится, а у остальных - и так сойдёт, как-нибудь справятся :P
Осталось узнать баг компонента ли это или фича конкретной системы.

На x86_64 линуксовых лазарусах, установленных из rpm, с GTK2 тулкитом наблюдаю такой же эффект убегания менюшки за край формы. На лазарусе 1.4.4 и более древних при уменьшении ширины окна менюшка отображается не вся, а на лазарусе 1.6.4 отключили растягиваемость окошка - теперь его уже не сделаешь и на фичу менюшки не полюбуешься.

Добавлено спустя 8 минут 57 секунд:
zub писал(а):Перепиши свой говнокод - всё будет ок. и не гони на лазарус.

Русскую документацию по написанию таких сложных приложений без того что ты называешь говнокодом в студию!
Не надо удалять контрол в обработчике его события. т.к. код этого контрола писал не ты и нет гарантии последующего обращения к уже убитому классу. Ферштейн?

Найн! Закрывать окошки надо и очищать выжранную ими память - тоже надо. В окошко могут грузиться тяжёлые картинки или тонны текста, если их не чистить, они всё равно будут каждый раз грузиться заново, в новые области памяти. Способ этого избежать нашли, но ты чем-то недоволен.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Сквозняк писал(а): Пока ты будешь пытать добиться идеального форматирования исходников, говнокод захватит ресурсы и станет стандартом.


Не так... он уже захватил. И знаешь, я, например, не знаю какую операционку использовать, так как все не устраивают.

Сквозняк писал(а):Найн! Закрывать окошки надо и очищать выжранную ими память - тоже надо. В окошко могут грузиться тяжёлые картинки или тонны текста, если их не чистить, они всё равно будут каждый раз грузиться заново, в новые области памяти.


Насколько я понимаю, Zub хочет сказать, что при необходимости выстрела в ногу ее (ногу) желательно убрать в сторону. Если компонент удаляет себя, то его надо просто отметить удаляемым. Если надо закрыть все окно, то стоит пометить форму закрывающейся, тогда, при завершении обработки нажатия, окно просто закроется, так как очередь перейдет к обработчику onClose. Насколько я помню, это функция Hide.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Закрывать окна надо - их все закрывают. и то что там загружено - убивают или нет по нужде. проблем с этим нет никаких. У других. У тебя почемуто есть

>>Вот такой обработчик стек не ломает:
>>А в procedure TForm9.Button1KeyDown практически тоже самое - ломает.
А ты поставь ка точку останова внутри и дотямай почему так происходит. и почему оба эти варианта не годны
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

zub писал(а):Закрывать окна надо - их все закрывают. и то что там загружено - убивают или нет по нужде. проблем с этим нет никаких. У других. У тебя почемуто есть

Меня не волнует почему именно случился баг - он случился, и я с ним борюсь как умею. Мой метод у меня работает, а твой - не проверен и не отлажен, а значит у меня сейчас не рабочий, то есть находится на этапе говнокода :mrgreen:
А ты поставь ка точку останова внутри и дотямай почему так происходит. и почему оба эти варианта не годны

Увы, когда было желание изучить ассемблер, не было возможности: ПО и литературы, а когда оно появилось вместе с интернетом, то желание сильно поуменьшилось :P Так что копайтесь в асме сами, у меня и так сейчас ПО работает и утечка памяти в нём стабилизировалась.

Добавлено спустя 16 минут 45 секунд:
Лекс Айрин писал(а):Насколько я помню, это функция Hide.

Потратил время, а на выходе https://yadi.sk/d/O0ht_yGZ3PjHyj глюки. Сама себя форма скрывает плохо. А если передавать команду сделать эту операцию родительской форме, то опять надо делать параллельный системному обработчик событий. И зачем тогда было со мной спорить :wink:
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Это не баг. это закономерность вызваная непониманием
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Сквозняк писал(а): В это же самое время ширину менюшки неоткуда взять, и неизвестно какой ширины делать форму - поместится на ней правый край меню, или нет - это большая загадка.


1.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Сквозняк писал(а):. Сама себя форма скрывает плохо.


Это как? В этом случае при выходе из любого приложения был бы глюк.

Код: Выделить всё

procedure TForm1.MenuItem2Click(Sender: TObject);
begin
Close;
end;

Что закрываем?

Добавлено спустя 2 минуты 32 секунды:
Сквозняк писал(а):А если передавать команду сделать эту операцию родительской форме, то опять надо делать параллельный системному обработчик событий.


Зачем? Чем тебя не устраивает Form.Hide?
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

Сквозняк писал(а):Затем что break не вызывает ощущения надёжности и комфорта

Совсем даже наоборот, Exit, break, continue имеют фиксированную точку выхода и, самое главное, посетят соответствующие finally блоки, в отличие от goto. Так что подобное применение goto это потенциальная утечка.

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

В общем в данном случае совершенно не мотивированное применение goto <=> говногод. :D

PS не понял при чем тут break, он же для циклов.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Рекорд побит? 3 страницы треда о том как закрыть форму...

Штатный Close чем не устаивает?
А в OnClose - CloseAction:=caFree;
И всё. И форма будет уничтожена, и ресурсы освобождены.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

alexs, то ли еще будет. Как я понял, человек просто не хочет рефакторить код и разбираться в чем причина глюков.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Сквозняк

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
  if FF_2=0 then
  begin
    Form2 := TForm2.Create(Application); //почему так? решайте сами, но: F_2: TForm2 относительно равно Form2
    FF_2:=1;
  end;
  Form2.Show;
  Form1.enabled:=false;
end;


Код: Выделить всё

procedure TForm2.Button1Click(Sender: TObject);
begin
  Form1.enabled:=true;
  Form1.BringToFront;
  form2.Hide;
end;
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Лекс Айрин писал(а):Это как? В этом случае при выходе из любого приложения был бы глюк.

В примере на кнопку в окне с картинкой нажимал? А ты нажми и полюбуйся на окно с ошибкой.
Что закрываем?

Родительскую форму. И, внезапно, она закрывается.
Зачем? Чем тебя не устраивает Form.Hide?

Ты ведёшь беспредметный разговор как тролль из "интернетвойск" РАН. В примере Form.Hide вызвало глюк, ты это проигнорировал и опять гонишь рекламу не рабочего кода. Тебе был дан образец глючного кода, построенного по твоим описаниям. Характерной особенностью троллей этого типа является отрицание и неиспользовании информации из некошерных источников, программируемый склероз и реклама нерабочей хрени по кругу, авось человек запутается и зомбируется.

Добавлено спустя 6 минут 5 секунд:
Лекс Айрин писал(а):alexs, то ли еще будет. Как я понял, человек просто не хочет рефакторить код и разбираться в чем причина глюков.

Ну ты же сам в приложенном примере не показал как этот глюк победить, а разбираться ещё и в твоих глюках - это мне не надо :mrgreen: Если ты думаешь, что интерфейс с окошками, это самая сложная часть кода, то ты крупно ошибаешься. Погромисты на плюсах на такую сложность вообще не берутся без живительных плёток манагеров с плюсами не знакомыми. И ты вот тут предлагаешь рефакторить рабочий код ради избавления от гото? Товарищи Сталин с Берией знаешь чтобы сделали в ответ на такое предложение :wink:
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Сквозняк
ага
сначала
F_2:=TForm2.Create(Application);
а потом
form2.Hide;
не заглядывал что там в form2 та лежит? или умники справляются без отладчика?

знатный глюк лазаря... и с серьезным видом упирается что не говнокод
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

Сквозняк писал(а):Сталин с Берией знаешь

Попробуйте воспроизвести глюк на пустой форме (без остального кода) и прикрепите сюда (на форум) этот проект.
И вот этот код, в новый проект, вставьте:
alexs писал(а):Штатный Close чем не устаивает?
А в OnClose - CloseAction:=caFree;


Получится сбой? :wink:

.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Mikhail писал(а):Совсем даже наоборот, Exit, break, continue имеют фиксированную точку выхода

Не видимую для программиста.
Кроме того использование для меток чисел уже давно устарело и рекомендуются человекопонятные идентификаторы.

Это говорит человек пишущий код на человеконепонятном алфавите, на языке, в котором сплошь и рядом у слова по 20-30 значений, а многих используемых значений нет вовсе.
В общем в данном случае совершенно не мотивированное применение goto <=> говногод.

Только к моему коду это обычно не относится :D Гото в нём даже если большой роли и не выполняет, то добавляет читаемости и эстетической красоты.

Добавлено спустя 2 минуты 23 секунды:
vitaly_l писал(а):Попробуйте воспроизвести глюк на пустой форме (без остального кода) и прикрепите сюда (на форум) этот проект.

Была же в сообщении ссылка на яндексдиск с примером https://yadi.sk/d/O0ht_yGZ3PjHyj
Ответить