Помогите начинающему

Вопросы программирования и использования MSEide + MSEgui.

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

Сообщение Bonart » 03.02.2008 13:52:40

2 Attid
Нет, я про ветку FPC из SVN - 2.2_fixes. Всегда пользовался только ей.
И MSE из транка всегда собиралась замечательно.
Косячок именно в MSE (например, тип pInteger определен в ДВУХ модулях - system и Windows), в результате если модуль Windows будет указан в implementation uses, то заголовки процедур с этим типом в интерфейсе и в теле оказываются разными.
Подозреваю, что это связано с более строгой проверкой типов параметров в компиляторе - видимо, раньше текстуального соответствия было достаточно.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение shade » 03.02.2008 15:20:41

У меня новая проблема... Бился, бился, но так и не добился. Как сделать кнопку с картинкой? Нормальную, с отступами между границей и картинкой, с отупом между текстом и картинкой...

Bonart писал(а):Нет, я про ветку FPC из SVN - 2.2_fixes. Всегда пользовался только ей.

Уже пора бы сделать
svn switch http://svn.freepascal.org/svn/fpc/tags/release_2_2_0
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Bonart » 03.02.2008 15:49:12

shade писал(а):Уже пора бы сделать

А зачем? Так я только сберегу у себя баги, исправленные уже после релиза. А вероятность насажать новых в fix-ветке низка - там никаких новых фич и модернизаций старых нету.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение shade » 03.02.2008 16:18:27

Хм, дата-модуль не создается в рантайме... как его подлючить?
Создавал через File->New->Form->Datamodule но он почему-то не прописался в файле проекта
Таже беда с формами - их после создания приходиться ручками прописывать - но это мелочь. С дата-модулем я вообще не понял как его подключить

debi12345 писал(а):Значит - опять огульно, не проверяя толком...

Это работает уже 100 лет - правда, через Control+Space. Плюс, Ctrl+Shift+Space внутри скобок метода - показывает параметры метода.

Да пробовал я, пробовал, но глюков столько, что сказать что работает у меня язык не поворачивается...
Во первых, чтобы погулять по списку с помощью клавы, нужно оторвать правую руку от клавы и немного потискать мышь, но даже после этого, гулять по списку с помощью клавы не получиться, т.к. как только фокус подходит к нижнему краю окна, он перемешаться обратно в начало списка... Клавиши <PgUp>, <PgDown> и скрол мыши не работают вообще... При первом клике по скрол бару, фокус перемещается куда-то почти в самый конец списка... При первом клиеке на сам список - скролбар перемешается в самый конец.
Во вторых, там не все методы/свойства, в частности я не нашел там метода show у формы - куда он потерялся понятия не имею...
В третьих, не понятно почему список начинается с ".." (двух точек)
В четвертых, список вроде отсортирован, но в конце списка после windowcreated почему-то идет create$tcomponent$boolean, function (! каким это боком?), getmoduleclassname и tbutton1
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Alexander » 03.02.2008 16:22:45

shade писал(а):У меня новая проблема... Бился, бился, но так и не добился. Как сделать кнопку с картинкой? Нормальную, с отступами между границей и картинкой, с отупом между текстом и картинкой...


А imagelist не помогает ?
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 799
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение shade » 03.02.2008 16:47:44

Alexander писал(а):А imagelist не помогает ?

Неа :roll:
Обязательно, где-нибудь косяк всплывает

От части понял... из-за того, что datamodule не подключился в рантайме картинка из imagelist на datamodule не отображалась...

Сейчас отсталось только как-то увеличить отступ между текстом и иконкой... и жалательно отцентрировать иконку с текстом, но не так как по дефолту - картинка под текстом (см. скришот)

Хм, помоему кто-то перепутал правое с левым... или что-то недопонял?

Изображение
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение debi12345 » 03.02.2008 17:18:54

shade писал(а):У меня новая проблема... Бился, бился, но так и не добился. Как сделать кнопку с картинкой? Нормальную, с отступами между границей и картинкой, с отупом между текстом и картинкой...

Как на тулбаре Аутлукэкспресса ? Мартин планирует для этого специальный тип кнопки, а пока можно эмулировать через обычную кнопку.
Картинку назначаете в FACE.IMAGE, а надпись - в FRAME.caption. Положение картинки - через FACE.iamge.alignment, положение текста - через FRAME.captionpos. Разводите их, меняя размер кнопки. Если в картинке заложена прозрачность, то можно это использовать на кнопке - включите FACE.image.options:=[bmo_masked,bmo_colormask].
Убрать "лишние" границы кнопки можно, установив FRAME.top/left/... := -1.

Левый отступ картинки на момент моих тестов можно было получить, только закладывая его в картинку. Хотя... Мартин что-то там сделал с отступами картинок для FRAME - авось тот самый случай, расскажете.

Если нативная кнопка для тулбара (с работающим левым отступом ) нужна срочно и позарез - скажите Мартину.

shade писал(а):Хм, дата-модуль не создается в рантайме... как его подлючить?
Создавал через File->New->Form->Datamodule но он почему-то не прописался в файле проекта
Таже беда с формами - их после создания приходиться ручками прописывать - но это мелочь. С дата-модулем я вообще не понял как его подключить


Создаются руками ( так надежнее - потому что 100% будт гарантирован нужный порядок инициализации ):

application.createdatamodule(tfmy,odule,mymodule);
application.createform(tfmyform,myform);

Начинается это дело в PROGRAM-файле проекта, затем - по желанию. Не забудьте включить нужные файлы в USES.

Модальную форму ( для запроса некого значения и записи его куда нибудь в дата-модуль,... ) можно вызвать и автозакрыть через "showmodalwidget(tmymodalform)".

shade писал(а):Во вторых, там не все методы/свойства, в частности я не нашел там метода show у формы - куда он потерялся понятия не имею...

Некоторые методы разрешаются по цепи наследования на уровне FPC. Если исходники файлов с этими методами не включены в пути отладчика - само собой, этих методов не увидите в автодополнении.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 » 03.02.2008 17:22:59

но не так как по дефолту - картинка под текстом (см. скришот)

FRAME.CAPTIONPOS/CAPTIONDIST & размер кнопки.

Добьетесь 100% результатf - расскажите !
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение shade » 03.02.2008 19:30:27

Вот максимум чего я смог добиться

imagelist/imagenr
frame.caption = 'OK';
frame.captionpos = 'center';
captionpos = cp_right (???)
imagedist = 10

Изображение

Но справа получается слишком много свободного простанства...

debi12345 писал(а):Если нативная кнопка для тулбара (с работающим левым отступом ) нужна срочно и позарез - скажите Мартину.

В хобби можно и не торопиться... Но реализация кнопки аля tbitbtn в Delphi/Lazarus

debi12345 писал(а):Мартин планирует для этого специальный тип кнопки

Не понятно зачем ещё один тип кнопки (в дополнение trichbutton, tstockglyphbutton)? когда можно просто исправить tbutton или проблема в обратной совместимости?
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение shade » 03.02.2008 21:06:26

Как запретить ресайзинг формы?
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение debi12345 » 03.02.2008 22:18:31

Как запретить ресайзинг формы?

Установить одинаковые c*min/max.

Для дочерних модальных форм, я эти размеры делаю близкими - чтобы позволить некоторый ограниченный ресайзинг и не усложнять анхоринг.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение shade » 04.02.2008 20:45:20

Как обработать двойной клик по ячейке TDrawGrid?
в сорцах вижу только cek_buttonpress, cek_buttonrelease :roll:
заодно растулкуйте что есть cek_mousepark, cek_firstmousepark и cek_select
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Attid » 04.02.2008 21:21:22

еще раз напоминаю что с радостью ждем вопрос\ответ в отдел FAQ укажи на грабли ближнему ! =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 04.02.2008 21:29:48

Сейчас отсталось только как-то увеличить отступ между текстом и иконкой...

Финт ушами - с нужной стороны текста пробелы печатайте. Я делаю так и в заголовках групбоксов.
(боясь получить такой же ответ от Мартина - пока не заикаюсь об отступах )

Как обработать двойной клик по ячейке TDrawGrid?
в сорцах вижу только cek_buttonpress, cek_buttonrelease Rolling Eyes
заодно растолкуйте что есть cek_mousepark, cek_firstmousepark и cek_select

Ничего не знаю про это - не было необходимости ( все мое "программирование" вокруг БД вертится )
Короче, даже сгенерировав и пошерстив доку - так и не понял с наскоку, как грузить картинки в этот грид. Поэтому с интересом почитаю вашу переписку с Мартином по этой теме в конференции.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 » 04.02.2008 22:17:13

Чуток разобрался - примерчик работает %) Типичный низкоуровневый компонент - для рисования чего угодно ( текста и векторной графики ) в коде программером.

// Пример начальной отрисовки - хук на datacols[N].OnDrawCell
// точка отсчета на канвасе = левый верхний угол
// рисуемой ячейки, поэтому текст опущен на 15 единиц вниз
// (иначе не будет виден)

procedure tmainfo.drawcol0(const sender: tcol; const canvas: tcanvas;
const cellinfo: cellinfoty);
begin
with cellinfo.cell,canvas do begin
drawstring(inttostr(row) + ':' + inttostr(col), makepoint(2,15));
end;
end;


// Ловля двойного клика :
// в пределах всего грида - хук на OnCellEvent
// в пределах конкретного столбца - хук на datacols[N].OnCellEvent

procedure tmainfo.cellevent(const sender: TObject; var info: celleventinfoty);
begin
if iscellclick(info,[ccr_dblclick]) then showmessage('Double clicked','msg');
end;

ПС:
Для камикадзе - без сгенерированной доки разбираться в этом низкоуровневом стаффе повеситесь !
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Пред.След.

Вернуться в MSEide + MSEgui

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru