|
|
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Имеется форма, на ней TcxTabControl, далее на вкладке кнопка удаления этой вкладки. Код удаление на кнопке pgControl.ActivePage.Free; вызывает исключение, как добиться удаление вкладки по кнопке на этой вкладке, что-то я торможу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 10:43 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Привет. wsnet Код удаление на кнопке pgControl.ActivePage.Free; вызывает исключение Код: pascal 1. С уважением, Polesov. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 11:42 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Polesov, Cannot access protected symbol TcxCustomTabControlProperties.Tabs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:18 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
wsnet Polesov, Cannot access protected symbol TcxCustomTabControlProperties.Tabs Странно. А какая версия DevEx? Я проверял на 16.2.6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:38 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
wsnet Имеется форма, на ней TcxTabControl ... Код удаление на кнопке pgControl.ActivePage .Free; А компонент точно TcxTabControl ? У него нет public/published свойства ActivePage . Может быть, TcxPageControl ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:41 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Polesov wsnet Имеется форма, на ней TcxTabControl ... Код удаление на кнопке pgControl.ActivePage .Free; А компонент точно TcxTabControl ? У него нет public/published свойства ActivePage . Может быть, TcxPageControl ? Сори, конечно TcxPageControl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:47 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
wsnet Сори, конечно TcxPageControl У меня отработало корректно Код: pascal 1. Под спойлером тестовая DFM (Delphi XE7) object Form11: TForm11 Left = 0 Top = 0 Caption = 'Form11' ClientHeight = 198 ClientWidth = 383 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object pgControl: TcxPageControl Left = 0 Top = 0 Width = 383 Height = 198 Align = alClient TabOrder = 0 Properties.ActivePage = cxTabSheet2 Properties.CustomButtons.Buttons = <> ClientRectBottom = 198 ClientRectRight = 383 ClientRectTop = 24 object cxTabSheet1: TcxTabSheet Caption = 'cxTabSheet1' ImageIndex = 0 end object cxTabSheet2: TcxTabSheet Caption = 'cxTabSheet2' ImageIndex = 1 object Button1: TButton Left = 128 Top = 48 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 0 OnClick = Button1Click end end object cxTabSheet3: TcxTabSheet Caption = 'cxTabSheet3' ImageIndex = 2 end end end А что еще, кроме кнопки, на удаляемом TcxTabSheet находится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 14:17 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Polesov wsnet Сори, конечно TcxPageControl У меня отработало корректно Код: pascal 1. Под спойлером тестовая DFM (Delphi XE7) object Form11: TForm11 Left = 0 Top = 0 Caption = 'Form11' ClientHeight = 198 ClientWidth = 383 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object pgControl: TcxPageControl Left = 0 Top = 0 Width = 383 Height = 198 Align = alClient TabOrder = 0 Properties.ActivePage = cxTabSheet2 Properties.CustomButtons.Buttons = <> ClientRectBottom = 198 ClientRectRight = 383 ClientRectTop = 24 object cxTabSheet1: TcxTabSheet Caption = 'cxTabSheet1' ImageIndex = 0 end object cxTabSheet2: TcxTabSheet Caption = 'cxTabSheet2' ImageIndex = 1 object Button1: TButton Left = 128 Top = 48 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 0 OnClick = Button1Click end end object cxTabSheet3: TcxTabSheet Caption = 'cxTabSheet3' ImageIndex = 2 end end end А что еще, кроме кнопки, на удаляемом TcxTabSheet находится? Находится TFrame, на TFrame кнопка удаления лежит, ну и TFrame на TabSheet, который и удаляем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 15:18 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
wsnet Находится TFrame, на TFrame кнопка удаления лежит, ну и TFrame на TabSheet, который и удаляем! У меня отработало корректно. Под спойлером исходники теста: program Project6; uses Vcl.Forms, Unit11 in 'Unit11.pas' {Form11}, Unit12 in 'Unit12.pas' {Frame12: TFrame}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm11, Form11); Application.Run; end. ////////////////////////////////////// unit Unit11; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinOffice2010Blue, dxSkinscxPCPainter, dxBarBuiltInMenu, cxPC, Unit12; type TForm11 = class(TForm) pgControl: TcxPageControl; cxTabSheet1: TcxTabSheet; cxTabSheet2: TcxTabSheet; cxTabSheet3: TcxTabSheet; Frame121: TFrame12; private { Private declarations } public { Public declarations } end; var Form11: TForm11; implementation {$R *.dfm} end. ////////////////////////////////////// object Form11: TForm11 Left = 0 Top = 0 Caption = 'Form11' ClientHeight = 299 ClientWidth = 635 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object pgControl: TcxPageControl Left = 0 Top = 0 Width = 635 Height = 299 Align = alClient TabOrder = 0 Properties.ActivePage = cxTabSheet2 Properties.CustomButtons.Buttons = <> ClientRectBottom = 299 ClientRectRight = 635 ClientRectTop = 24 object cxTabSheet1: TcxTabSheet Caption = 'cxTabSheet1' ImageIndex = 0 end object cxTabSheet2: TcxTabSheet Caption = 'cxTabSheet2' ImageIndex = 1 inline Frame121: TFrame12 Left = 0 Top = 0 Width = 635 Height = 275 Align = alClient TabOrder = 0 inherited Button1: TButton Left = 32 Top = 48 end end end object cxTabSheet3: TcxTabSheet Caption = 'cxTabSheet3' ImageIndex = 2 end end end ////////////////////////////////////// unit Unit12; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinOffice2010Blue, dxSkinscxPCPainter, dxBarBuiltInMenu, cxPC; type TFrame12 = class(TFrame) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; implementation {$R *.dfm} procedure TFrame12.Button1Click(Sender: TObject); var c : TComponent; begin with GetParentForm( Self ) do begin c := FindComponent( 'pgControl' ); if Assigned( c ) then if c is TcxPageControl then TcxPageControl( c ).ActivePage.Free; end; end; end. ////////////////////////////////////// object Frame12: TFrame12 Left = 0 Top = 0 Width = 320 Height = 240 TabOrder = 0 object Button1: TButton Left = 112 Top = 104 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 0 OnClick = Button1Click end end Кнопка лежит на фрейме, фрейм в отдельном модуле. А как в обработчике нажатия кнопки определяется компонент pgControl? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 16:00 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
wsnet, PostMessage - не достаточно надёжно ? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 16:04 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
wsnet Находится TFrame, на TFrame кнопка удаления лежит, ну и TFrame на TabSheet, который и удаляем! Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 16:05 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Polesov, Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 18:08 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Сам вызов: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 18:10 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
wsnet Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Да вроде все так. Я бы для начала удалил с фрейма все, кроме, собственно, кнопки удаления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 18:16 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Polesov, вот и мне интересно, я Tframe и TTabSheet создаю динамически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 18:24 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Polesov, исходники вашего тестового примера не можете закачать на файлообменник, я скачаю и протестирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 18:29 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
wsnet Polesov, исходники вашего тестового примера не можете закачать на файлообменник, я скачаю и протестирую. У меня нет исходников проекта, я не сохранял. В принципе, под спойлером все тексты есть. Файлы проекта разделены "//////////////////////////////////////" Первая часть - Project6.dpr Вторая часть - Unit11.pas Третья часть - Unit11.dfm Четвертая часть - Unit12.pas Пятая часть - Unit12.dfm Думаю, не сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 18:52 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Polesov, опять ловлю AV создаю фрейм с одной кнопкой только! Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 19:59 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Polesov wsnet Polesov, исходники вашего тестового примера не можете закачать на файлообменник, я скачаю и протестирую. У меня нет исходников проекта, я не сохранял. В принципе, под спойлером все тексты есть. Файлы проекта разделены "//////////////////////////////////////" Первая часть - Project6.dpr Вторая часть - Unit11.pas Третья часть - Unit11.dfm Четвертая часть - Unit12.pas Пятая часть - Unit12.dfm Думаю, не сложно. В том то и дело, что и здесь ловлю AV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 20:03 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
Тему закрываем! Разобрался! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 20:27 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
В случаи если на TFrame я ложу cxbutton возникает AV, если это TButton, то AV нет. В чем разница не понимаю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 20:41 |
|
||
|
TcxTabControl удаление
|
|||
|---|---|---|---|
|
#18+
wsnet В случаи если на TFrame я ложу cxbutton возникает AV Привет. AV возникает в модуле cxButtons Код: pascal 1. 2. 3. 4. 5. 6. Дело в том, что в результате выполнения метода нажатия кнопки происходит освобождение объектов: pgControl.ActivePage, фрейма, ну и в том числе самой кнопки, которая лежит на удаляемом фрейме. Конечно, можно подправить исходный код cxButtons (если он доступен) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Но мне больше нравится способ с использованием SendMessage, предложенный ma1tus. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Причем именно SendMessage: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. С уважением, Polesov. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2019, 10:49 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39895758&tid=2038813]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
4ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 494ms |

| 0 / 0 |
