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

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

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

Сообщение shade » 05.02.2008 19:37:38

debi12345 писал(а):Короче, даже сгенерировав и пошерстив доку - так и не понял с наскоку, как грузить картинки в этот грид.

Вот так:
Код: Выделить всё
procedure tmainfo.OnDrawCell(const sender: tcol; const canvas: tcanvas;
               const cellinfo: cellinfoty);
var
  p: pointty;
  pi: PPanelInfo;
  fnt: tfont;
  bg: colorty;
  AFile: TVFSFile;
begin
  pi := PPanelInfo(sender.grid.tagpo);
  if pi^.selection[cellinfo.cell.row] then
  begin
    fnt := sender.fontselect;
    bg := sender.colorselect;
  end
  else
  begin
    fnt := sender.actualfont;
    bg := sender.color;
  end; // if

  AFile := pi^.FileList[cellinfo.cell.row];
 
  canvas.fillrect(cellinfo.rect, bg);
 
  p.x := 2;
  p.y := 2;
  FileIcons.paint(canvas, AFile.IconIndex, p);
 
  p.x := 22;
  p.y := Canvas.Font.Ascent;
  canvas.DrawString(AFile.Name, p, fnt);
end;


debi12345 писал(а):// Ловля двойного клика :
if iscellclick(info,[ccr_dblclick]) then showmessage('Double clicked','msg');

Ух, как хитро... теперь работает.

debi12345 писал(а):ПС:
Для камикадзе - без сгенерированной доки разбираться в этом низкоуровневом стаффе повеситесь !

Не впервой :wink:

ПС
Ну вроде все вопросы исчерпались :wink:
Жду повления нормальной кнопки с нормальной поддержкой иконки, а пока юзаю без иконки...
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение debi12345 » 05.02.2008 20:23:51

Жду повления нормальной кнопки с нормальной поддержкой иконки, а пока юзаю без иконки...

Нынешняя, завязанная на "imagelist", не подходит - если печатать пробелы для отступа от "caption" ?
(я тоже считал, что нету такой кпонки - пока не смекнул про пробелы )

Ух, как хитро... теперь работает.

Не столько хитро, сколько заточено под гриды :). Например, отказывает в двойном клике, если между кликами случайно перескочить в другую ячейку ( по умолчанию интервал двойного клика = 0,4 сек).

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

Сообщение debi12345 » 05.02.2008 20:27:22

Вот так:

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

Сообщение Attid » 03.03.2008 16:10:09

debi12345
а для М\Ж какой дб контрол лучше заюзать ?
в базе соответсвенно должно храниться 1\0 по дефолту null
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 03.03.2008 20:00:12

DBe => tdbboooleantextedit

Назначить варианты :

1) text => false:= 'M', text => true:= 'Ж'
{ нечто типа "не задано" для NULL Мартин делать отказывается - говорит "это - идиотизм" }


или, если нужен автоматом одинаковый вид в гриде и на форме редактирования

2) связанное БД-поле сделать persistent, и назначить ему displayvalues='M;Ж'
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Attid » 18.03.2008 00:38:33

shade
как успехи ?

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

Сообщение debi12345 » 18.03.2008 08:09:43

Мартин все "туда" переместил, в контрибьютид. "Print_testcase" называется.

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

Сообщение Attid » 18.03.2008 12:29:17

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

Сообщение Attid » 18.03.2008 22:28:34

debi12345 писал(а):"Print_testcase" называется.

там некоторые лишнии вещи аля

Код: Выделить всё
with dmprintmo,psprn,canvas do begin


хотя хватит

Код: Выделить всё
with dmprintmo do begin

конечно не смертельно, но мешает разбираться, можно поубирать лишнее ?


вознило несколько вопросов
у хваленой заточной под бд проэкты мсе
1, нет встроеного диалога выбора принтера и т.д.
и надо изобретать велосипед или пользовать твои формы из этого проэкта.
2, мсе печатать не умеет, а только генерит псфайл который похватывают консольные утилиты.
я конечно не то что настаиваю на изобретении велосипеда, но хотябы через либы можно было это сделать ..
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 02.04.2008 10:03:05

Attid писал(а):там некоторые лишнии вещи аля

Код: Выделить всё
with dmprintmo,psprn,canvas do begin

хотя хватит
Код: Выделить всё
with dmprintmo do begin

конечно не смертельно, но мешает разбираться, можно поубирать лишнее ?

Это "хвосты" от отладки. При подготовке в качестве примера (в будущем ) - почистим.

Attid писал(а):вознило несколько вопросов
у хваленой заточной под бд проэкты мсе
1, нет встроеного диалога выбора принтера и т.д.

Есть - в contributed (сам не смотрел, ибо мне нужны как раз "велосипеды" ).
Проблема, почему Марин сам это не делает - в стандартизации, то бишь какой ЕДИНСТВЕННЫЙ спулер выбрать для Линукс. Лично я - не люблю CUPS, так как его нужно настраивать, доку читать, а это лень. А кто-то наоборот без него жить не может - ибо поддерживает редкие драйвера...

и надо изобретать велосипед или пользовать твои формы из этого проэкта

А как еще было сделать в том проекте, где на выбор графическая и текстовая печать, отладка печати и т.п. ?

2, мсе печатать не умеет, а только генерит псфайл который похватывают консольные утилиты.

Под вынь-32, TGDIPrinter умеет печатать на системные принтеры ( очередь=принтер прописываются в свойствах ) без промежуточных файлов (под Линукс GDI-принтер пока не разработан - потому что опять-таки КОМУ отдавать задания ? Вроде бы лучший кандидат XPRT печатает грязно и грубо, без авто-разбивки на страницы ). Одно "но" - если матрица резолюшена не квадратная (матричные принтеры) - пропорции документа окажутся искажены. Кто найдет, как в Вынь-32 НАДЕЖНО узнать пропорции этой матрицы - WELCOME !
TPostScriptPrinter, если ему назначить драйвер принтера "pdrwrite" - создает прекрасные PDF-файлы. То есть можно распечатывать либо PS-файлы (через GS-вьюер), либо PDF- через AcrobatReader. Или использовать эти программы в качестве диалога печати / превьюера
( как я и делаю даже в Вынь-32 - и беды не знаю ).

Если есть желание и время - нарисуйте диалог выбора принтера. Там нужно 1) список очередей {с учетом default-принтера }, 2) кнопка вызова API настройки драйвера принтера для выбранной очереди и 3) привязка к экземпляру TGDIPrinter (на канвас которого печатать ).

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

Сообщение Attid » 02.04.2008 12:08:47

debi12345 писал(а):если ему назначить драйвер принтера "pdrwrite"

а есть ли он в виндоус ? дай линку, я встречал только платные.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 02.04.2008 13:01:06

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


"D:\Program Files\Ghostgum\gsview\"gsprint.exe -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=<out_file>.pdf <input_file>.ps

Пакет - не платный, а просто просит деньги за "убрать нэг-скрин" %)

Вот лицензия :
==============
If you wish to support the development of GSview or wish to disable the GSview nag screen, please consider registering GSview. There is no requirement for you to register GSview. GSview is made available with the Aladdin Free Public Licence, contained in the file LICENCE. This allows free use, but restricts commercial distribution.
==============

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

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

Сообщение worrier » 05.06.2008 19:45:33

Подскажите, как работать с treport.
Просмотрел архив конференции, примеры shrinking_testcase(Ivankob) и printtest(Attid), но недопонимаю чего-то.
Создаю проект, добавляю Report, кидаю на форму, допустим, trepprintdatedisp1. В обработчике кнопки главной формы пишу следующий код:
Код: Выделить всё
procedure tmainfo.printexec(const sender: TObject);
var
  myreport   : treport1re;
  mystream   : ttextstream;
  tmpfile: string;
begin
  // создаю экземляр моего treport1re
  myreport := treport1re.create(nil);
  // получаю путь временного файла myreport.ps
  tmpfile := gettempfilename(gettempdir ,'myreport');
  // создаю поток (временный файл)
  mystream:= ttextstream.create(tmpfile,fm_create);
  // собственно отображаю отчет в файл через "принтер" psprinter
  myreport.render(psprinter, mystream);
  // ожидаю пока report создаст файл
  myreport.waitfor;
  // просматриваю файл с помощью kghostview
  execwaitmse('kghostview '+tmpfile,false);
end;

В итоге получаю чистый лист. Меня смущает строка myreport.render(...), возможно, я не правильно понимаю её значение...(render$tstreamprinter$string$reporteventty)...
worrier
незнакомец
 
Сообщения: 7
Зарегистрирован: 26.04.2008 12:15:44

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

Сообщение Attid » 05.06.2008 22:10:05

код нормальный, на форме репорта должен быть рекордбенд.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

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

Сообщение worrier » 05.06.2008 23:16:59

Я пробовал по-разному, но, увы, результат - чистый лист...
Попытаюсь прикрепить мой тестовый проект.
Посмотрите, пожалуйста, в чем проблема у меня...
версия из svn - 2312
Вложения
report_test.tar.gz
(6.35 КБ) Скачиваний: 581
worrier
незнакомец
 
Сообщения: 7
Зарегистрирован: 26.04.2008 12:15:44

Пред.След.

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

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

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

Рейтинг@Mail.ru