|
|
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
3-й день кодинга - дает мозг сбои. Задача для меня нетипичная, поэтому прошу совета гуру. Есть запись типа Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Вот выводятся панели-плитки с одновременно обрабатываемыми заказами (типа официант обслуживает 3 столика и у каждого столика свои заказы. Кликаем на панель - активирует соотв. окно с редактированием заказа TcfAddSaleForm Но вот незадача. В TcfAddSaleForm официант жмет ОТМЕНИТЬ заказ - как из этой формы грохнуть саму форму редактирования, лейбл и панель из главной формы, а затем и сам элемент дженерика (тоже на главной форме)? какое проперть нужно создать в TcfAddSaleForm, чтоб это можно было использовать для моей задачи? Чет, туплю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2020, 20:21 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin как из этой формы грохнуть саму форму редактирования Пошли окну сообщение "умри". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2020, 20:27 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
ъъъъъ GrigoriyFomin как из этой формы грохнуть саму форму редактирования Пошли окну сообщение "умри". Это понятно, форму я по Free прикончу - как в основной форме грохнуть связанные с ней элементы интерфейса? они в массиве? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2020, 20:29 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin ъъъъъ пропущено... Пошли окну сообщение "умри". ...как в основной форме грохнуть связанные с ней элементы интерфейса? Пошли сообщение "основной" форме. GrigoriyFomin они в массиве? Никто, кроме тебя, не знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2020, 20:32 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, Сделать у формы поле типа ^TcfOrdElem и при создании формы назначать его. При закрытии заказа отправлять родительской форме сообщение, например WM_CANCELORDER, с этим значением в LPARAM. А она при получении этого сообщения уже пусть сама прибивает всё что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2020, 20:34 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
alekcvp GrigoriyFomin, Сделать у формы поле типа ^TcfOrdElem и при создании формы назначать его. При закрытии заказа отправлять родительской форме сообщение, например WM_CANCELORDER, с этим значением в LPARAM. А она при получении этого сообщения уже пусть сама прибивает всё что надо. а в 64битной винде будет работать? Там же вроде приколы с адресами и int32 и int64 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2020, 20:50 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, будет работать. Нет там таких приколов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2020, 21:11 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
alekcvp, вот тут засада. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. так тоже не помогает Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2020, 21:30 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
вообщем, передал на форму основные элементы, их при закрытии грохаю, но элемент в ТЛист остается, да и бог с ним, зато нужный эффект достигнут - панель на главной форме исчезает. не знаю, может потом и будут проблемы или утечки памяти - пока работает, победить по-другому не шмог :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2020, 21:50 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin Код: pascal 1. 2. 3. Зачем к нему обращаться?.. В TcfAddSaleForm.OnDestroy отправляете сообщение основной форме: Код: pascal 1. После этого в обработчике этого сообщения пишете: Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 12:45 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
alekcvp, как получить адрес элемента, который был добавлен в ТЛист? Я ж работаю с локальной переменной - она в стеке, посте метода Адд она наверняка помещается по другому адресу - как узнать потом тот адрес? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 13:02 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFominЯ ж работаю с локальной переменной - она в стеке Эта переменная, внезапно, указатель. От перемены указателя адрес объекта не меняется. И тупишь ты не с задачей, а с азами. Из задачи же можно просто выкинуть дженерик и она станет тривиальной: просто в главной форме проверяй ModalResult и по mrCancel удаляй лейбл и панель для которой вызывал свой TcfAddSaleForm.ShowModal. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 13:21 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin alekcvp, как получить адрес элемента, который был добавлен в ТЛист? Я ж работаю с локальной переменной - она в стеке, посте метода Адд она наверняка помещается по другому адресу - как узнать потом тот адрес? Не уверен на 100%, но метод Add вроде возвращает индекс добавленного элемента, т.е. можно сделать Код: pascal 1. Тогда в OrdElem точно окажется указатель на нужный элемент в списке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 13:44 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
alekcvp, элементы могут перетасовываться в результате добавления/удаления - индекс будет меняться все время и по этому адресу может находиться другой жэлемент. Я так понимаю, в этом случае сохраняется адрес на n-й элемент ТЛиста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 14:45 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
Читая такой топик, хочется плакать... Это задача тривиальная, решается она ровно за 5 минут. Раз Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. Два Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. Что сложного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 15:16 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Он хочет в списке хранить не формы, а свои записи в которых так же хранится ссылка на дополнительные компоненты. Хотя, ИМХО, действительно проще будет эти ссылки сделать свойствами этой формы, а саму форму хранить в обычном TList, тогда и дженерики тут нафиг не нужны. И при закрытии формы, сначала убивать доп. компоненты по ссылкам из свойств этой формы, а потом саму форму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 15:22 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
alekcvp, Вообще ПОФИГ это задача на столько простая, что её можно как угодно модифицировать Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. Второй модуль трогать не надо, хотя в первом модуле уже структура появилась для формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 15:34 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
Хотя зачем для формы создавать ещё одну структуру, для меня загадка. Но и форма может быть не формой в тоже время, но задачу это не меняет. Вместо формы объектом Формы, может быть тот же TPanel и задача будет как в первом коде. А информационным полям является класс TPanel как в данном случае TForm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 15:37 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
В любом случае в базу данных нужно будет добавлять информацию о заказах, от этого просто не уйти. К примеру выключили свет, все формы закрылись. Включаем компьютер, и по информации из базы мы создаём все формы как это было изначально. По этому хранения структуры какой - то там в TList которая свой грою несёт на себе... Это ещё за затея... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 15:41 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, хранить открытые заказы в базе - тоже наверное верно, мало ли что произойдет. А можно как-то в блоб сеарелизовать форму? Ну чтоб не хранить все введенные данные в нее вручную? (там сами позиции, скидки, дисконты, сотрудники и проч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 16:09 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, Ты всё это должен хранить в базе, создав простую структуру, по которой будешь автосоздавать формы, компоненты и прочее. И записывать данные в эти компоненты. И потом удалять из базы, когда это уже стало неактуально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 16:12 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin ВсеРазумный, хранить открытые заказы в базе - тоже наверное верно, мало ли что произойдет. А можно как-то в блоб сеарелизовать форму? Ну чтоб не хранить все введенные данные в нее вручную? (там сами позиции, скидки, дисконты, сотрудники и проч. TStream.WriteComponent() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 16:14 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, блин, хотел как попроще, придется теперь монстра воротить я думал можно как-то слепок текущей формы в поток засунуть, типа дампа памяти или еще как-то. Чтоб не перебирать все нужные поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 16:18 |
|
||
|
удалить элемент TList<>
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, Свойства самого класса ты никак не сохранишь, по этому вариант только с помощью базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2020, 16:29 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39993904&tid=2038035]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 371ms |

| 0 / 0 |
