как поместить wxButton в wxTextCtrl чтоб т Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
ImmortalDragon
Earned a small fee
Earned a small fee
Posts: 20
Joined: Fri Oct 15, 2010 6:55 pm

как поместить wxButton в wxTextCtrl чтоб т

Post by ImmortalDragon » Fri Oct 15, 2010 7:17 pm

Нужно поставить кнопку в поле ввода с левого края, чтобы при нажатии на нее стирался весь текст (ну или что-то другое) (видел в некоторых программах).
Создаю новый класс MyTextCtrl наследник от wxTextCtrl. В конструкторе помещаю внутрь кнопочку и с помощью sizer ставлю ее с лева. Вроде работает, но когда печатается текст он залезает ПОД кнопку, можно ли как то ограничить его, т.е. сделать так что-бы правая граница текста была не правая граница виджета, а левая граница находящейся внутри нее кнопочки?
Есть вариант создать панельку (MyTextCtrl наследник от wxPanel)и на ней поместить поле ввода и кнопочку рядом, и ее использовать как MyTextCtrl. Но какие могут быть плюсы и минусы такого решения, я только начинаю осваивать wxWidgets.
Подскажите в какую сторону смотреть.

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Sun Oct 17, 2010 7:34 am

А в сайзер добавить кнопку и комбобокс и сделать между ними промежуток равный 0 не подойдет?
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

ImmortalDragon
Earned a small fee
Earned a small fee
Posts: 20
Joined: Fri Oct 15, 2010 6:55 pm

Post by ImmortalDragon » Sun Oct 17, 2010 2:38 pm

borr_1 wrote:А в сайзер добавить кнопку и комбобокс и сделать между ними промежуток равный 0 не подойдет?
А при чем здесь комбобокс, если нужен только вводить данные?
Мне вообще желательно чтобы это было как один виджет, мне его придется вставлять в grid, как редактор ячееек и отдельно использовать. И там будет не одна кнопка, а возможно 2 или 3. И по TAB должен перепрыгивать имеено на ввод текста, а не на эти кнопочки.

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo » Mon Oct 18, 2010 9:01 am

borr_1 wrote:А в сайзер добавить кнопку и комбобокс и сделать между ними промежуток равный 0 не подойдет?
Идея правильная, но не комбобокс а скорее wxTextCtrl, я ща попробовал эту схему но на панеле, вроде нормально работает..... полагаю можно как-то влепить в ячейку грида... и возможно будет работать так-же нормально.....
Attachments
TextCtrl.png
TextCtrl.png (2.47 KiB) Viewed 4848 times
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Mon Oct 18, 2010 10:20 am

Посмотри wxFilePickerCtrl и делай как там
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo » Mon Oct 18, 2010 12:12 pm

borr_1 wrote:Посмотри wxFilePickerCtrl и делай как там
Как я понимаю автору нужна кнопка в гриде типа как в 1С
Attachments
1c.png
1c.png (1.41 KiB) Viewed 4841 times
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Mon Oct 18, 2010 12:25 pm

А я про что там как раз TextCtrl+Button. В исходники wx заходишь смотришь делаешь то же, но со своей функциональностью.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

ImmortalDragon
Earned a small fee
Earned a small fee
Posts: 20
Joined: Fri Oct 15, 2010 6:55 pm

Post by ImmortalDragon » Tue Oct 19, 2010 6:21 am

borr_1 wrote:Посмотри wxFilePickerCtrl и делай как там
Спасибо. Будем копать. Только в 1с 8 насколько я понимаю это не кнопка, а ....., которче winspy мне показывает, что это один элемент.

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Tue Oct 19, 2010 7:42 am

Ты кнопочку как запихиваешь - OnPaint переписываешь. Так там должно быть DrawTextRectangle эта ф-я хочет wxRect длину которого ты делаешь = длине wxTextCtrl - длина твоей кнопочки
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

ImmortalDragon
Earned a small fee
Earned a small fee
Posts: 20
Joined: Fri Oct 15, 2010 6:55 pm

Post by ImmortalDragon » Tue Oct 19, 2010 9:20 am

borr_1 wrote:Ты кнопочку как запихиваешь - OnPaint переписываешь. Так там должно быть DrawTextRectangle эта ф-я хочет wxRect длину которого ты делаешь = длине wxTextCtrl - длина твоей кнопочки
Непонял, поподробнее. OnPaint какого виджета? DrawTextRectangle не нашел ни в справке ни в исходниках, да и OnPaint не нашел.

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Tue Oct 19, 2010 10:06 am

http://forums.wxwidgets.org/viewtopic.p ... tctrl+draw

Только бери wxDC а не wxPaintDC, а у wxDC есть DrawText про это уже в справке есть. Как ты кнопку умудрился в TextCtrl впихнуть я так и не понял. И потом если кнопку просто отрисуешь придется повозиться с эффектом нажатия на нее. Короче первый вариант (см wxFilePickerCtrl ) проще будет.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

ImmortalDragon
Earned a small fee
Earned a small fee
Posts: 20
Joined: Fri Oct 15, 2010 6:55 pm

Post by ImmortalDragon » Tue Oct 19, 2010 11:19 am

borr_1 wrote:http://forums.wxwidgets.org/viewtopic.p ... tctrl+draw

Только бери wxDC а не wxPaintDC, а у wxDC есть DrawText про это уже в справке есть. Как ты кнопку умудрился в TextCtrl впихнуть я так и не понял. И потом если кнопку просто отрисуешь придется повозиться с эффектом нажатия на нее. Короче первый вариант (см wxFilePickerCtrl ) проще будет.
Я же только учусь учусь с wxWidgets общатся. Я просто создал кнопку у которой parent является wxTextCtrl. :roll:

ImmortalDragon
Earned a small fee
Earned a small fee
Posts: 20
Joined: Fri Oct 15, 2010 6:55 pm

Post by ImmortalDragon » Tue Oct 19, 2010 12:24 pm

borr_1 wrote:http://forums.wxwidgets.org/viewtopic.p ... tctrl+draw

Только бери wxDC а не wxPaintDC, а у wxDC есть DrawText про это уже в справке есть. Как ты кнопку умудрился в TextCtrl впихнуть я так и не понял. И потом если кнопку просто отрисуешь придется повозиться с эффектом нажатия на нее. Короче первый вариант (см wxFilePickerCtrl ) проще будет.
Насколько я понял из wxFilePickerCtrl, там на основание wxPickerBase(в самом начале я пробовал этот этот вариант но с wxPanel) добавляется wxTextCtrl и wxButton , Это хорошо.
А если через DC делать, то я должен сам заботится о выводе текста и его урезании? (Тогда какой смысл наследовать от wxTextCtrl, нужно напрямую от wxControl?)

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Tue Oct 19, 2010 12:29 pm

Потому что в wxTextCtrl многое уже реализовано типа SetValue GetValue и т.д. а котрол это голый базовый класс.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

ImmortalDragon
Earned a small fee
Earned a small fee
Posts: 20
Joined: Fri Oct 15, 2010 6:55 pm

Post by ImmortalDragon » Tue Oct 19, 2010 1:49 pm

borr_1 wrote: а у wxDC есть DrawText про это уже в справке есть.
Наверное имелось в виду DrawLabel, у DrawText нету параметра wxRect.

Post Reply