Помогите начинающему
Модератор: Модераторы
2 Attid
Нет, я про ветку FPC из SVN - 2.2_fixes. Всегда пользовался только ей.
И MSE из транка всегда собиралась замечательно.
Косячок именно в MSE (например, тип pInteger определен в ДВУХ модулях - system и Windows), в результате если модуль Windows будет указан в implementation uses, то заголовки процедур с этим типом в интерфейсе и в теле оказываются разными.
Подозреваю, что это связано с более строгой проверкой типов параметров в компиляторе - видимо, раньше текстуального соответствия было достаточно.
Нет, я про ветку FPC из SVN - 2.2_fixes. Всегда пользовался только ей.
И MSE из транка всегда собиралась замечательно.
Косячок именно в MSE (например, тип pInteger определен в ДВУХ модулях - system и Windows), в результате если модуль Windows будет указан в implementation uses, то заголовки процедур с этим типом в интерфейсе и в теле оказываются разными.
Подозреваю, что это связано с более строгой проверкой типов параметров в компиляторе - видимо, раньше текстуального соответствия было достаточно.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
У меня новая проблема... Бился, бился, но так и не добился. Как сделать кнопку с картинкой? Нормальную, с отступами между границей и картинкой, с отупом между текстом и картинкой...
Уже пора бы сделать
svn switch http://svn.freepascal.org/svn/fpc/tags/release_2_2_0
Bonart писал(а):Нет, я про ветку FPC из SVN - 2.2_fixes. Всегда пользовался только ей.
Уже пора бы сделать
svn switch http://svn.freepascal.org/svn/fpc/tags/release_2_2_0
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Хм, дата-модуль не создается в рантайме... как его подлючить?
Создавал через File->New->Form->Datamodule но он почему-то не прописался в файле проекта
Таже беда с формами - их после создания приходиться ручками прописывать - но это мелочь. С дата-модулем я вообще не понял как его подключить
Да пробовал я, пробовал, но глюков столько, что сказать что работает у меня язык не поворачивается...
Во первых, чтобы погулять по списку с помощью клавы, нужно оторвать правую руку от клавы и немного потискать мышь, но даже после этого, гулять по списку с помощью клавы не получиться, т.к. как только фокус подходит к нижнему краю окна, он перемешаться обратно в начало списка... Клавиши <PgUp>, <PgDown> и скрол мыши не работают вообще... При первом клике по скрол бару, фокус перемещается куда-то почти в самый конец списка... При первом клиеке на сам список - скролбар перемешается в самый конец.
Во вторых, там не все методы/свойства, в частности я не нашел там метода show у формы - куда он потерялся понятия не имею...
В третьих, не понятно почему список начинается с ".." (двух точек)
В четвертых, список вроде отсортирован, но в конце списка после windowcreated почему-то идет create$tcomponent$boolean, function (! каким это боком?), getmoduleclassname и tbutton1
Создавал через 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 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Alexander писал(а):А imagelist не помогает ?
Неа
Обязательно, где-нибудь косяк всплывает
От части понял... из-за того, что datamodule не подключился в рантайме картинка из imagelist на datamodule не отображалась...
Сейчас отсталось только как-то увеличить отступ между текстом и иконкой... и жалательно отцентрировать иконку с текстом, но не так как по дефолту - картинка под текстом (см. скришот)
Хм, помоему кто-то перепутал правое с левым... или что-то недопонял?

- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
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. Если исходники файлов с этими методами не включены в пути отладчика - само собой, этих методов не увидите в автодополнении.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Вот максимум чего я смог добиться
imagelist/imagenr
frame.caption = 'OK';
frame.captionpos = 'center';
captionpos = cp_right (???)
imagedist = 10
Но справа получается слишком много свободного простанства...
В хобби можно и не торопиться... Но реализация кнопки аля tbitbtn в Delphi/Lazarus
Не понятно зачем ещё один тип кнопки (в дополнение trichbutton, tstockglyphbutton)? когда можно просто исправить tbutton или проблема в обратной совместимости?
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 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Сейчас отсталось только как-то увеличить отступ между текстом и иконкой...
Финт ушами - с нужной стороны текста пробелы печатайте. Я делаю так и в заголовках групбоксов.
(боясь получить такой же ответ от Мартина - пока не заикаюсь об отступах )
Как обработать двойной клик по ячейке TDrawGrid?
в сорцах вижу только cek_buttonpress, cek_buttonrelease Rolling Eyes
заодно растолкуйте что есть cek_mousepark, cek_firstmousepark и cek_select
Ничего не знаю про это - не было необходимости ( все мое "программирование" вокруг БД вертится )
Короче, даже сгенерировав и пошерстив доку - так и не понял с наскоку, как грузить картинки в этот грид. Поэтому с интересом почитаю вашу переписку с Мартином по этой теме в конференции.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Чуток разобрался - примерчик работает %) Типичный низкоуровневый компонент - для рисования чего угодно ( текста и векторной графики ) в коде программером.
// Пример начальной отрисовки - хук на 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;
ПС:
Для камикадзе - без сгенерированной доки разбираться в этом низкоуровневом стаффе повеситесь !
// Пример начальной отрисовки - хук на 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;
ПС:
Для камикадзе - без сгенерированной доки разбираться в этом низкоуровневом стаффе повеситесь !
