Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2014, 20:16   #131
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от AndreyNM Посмотреть сообщение
Юрий, а вы не рассматривали вариант разделения модулей проекта на разные файлы, а в файле проекта содержались бы только ссылки на эти файлы? Загрузка проекта изменится совсем немного - ссылки будут заменены текстом из файлов модулей. При сохранении тоже больших проблем не вижу. Модуль разбивать на lfm и pas не нужно - также сохранять всё в одном xml-файле.
Мне кажется при совместной работе над большим проектом это будет гораздо удобнее - реже придётся разрешать конфликты и т.п. проблемы. А также будет легче вносить изменения на стороне заказчика и совмещать их потом с общим проектом.
При желании такой способ сохранения можно сделать опциональным - хочешь так, а хочешь по другому. Что вы думаете по этому поводу?
Технически это возможно. Подобный функционал спрашивают регулярно, конечно я его запланировал, но не могу сказать, когда будет возможность реализовать, только в следующем году.. У меня была опция "Внешние модули" в Delphi версии, только там не в XML, а по раздельным файлам всё хранилось, как в Delphi. Надо подумать, может и вправду сделать вынос не одного модуля, а целого блока в отдельный XML типа библиотеки.
Rik вне форума Ответить с цитированием
Старый 01.12.2014, 20:53   #132
vladrvv
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 59
По умолчанию

К примеру Tdbf. Пытаюсь устанавить нижнюю границу SetRange через значение Edit1.Text.
Цитата:
sKey = Copy(Edit1.Text, 1, 1);
sKey_End = Chr(Ord(sKey)+1);
Вторая строчка не срабатывет. Скорее всего это связано с кодировкой UTF
vladrvv вне форума Ответить с цитированием
Старый 02.12.2014, 08:41   #133
vladrvv
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 59
По умолчанию

Вот так нормально получилось
Цитата:
method TMainForm.Edit1Change(Sender: TObject);
var
s1u,s2u:UnicodeString;
begin
s1u = UpperCase(Edit1.Text);
s2u =s1u+'№';

Label1.Caption =s1u;
if Length(s1u) > 0 then
xDbf1.SetRange(s1u, s2u);
else
xDbf1.CancelRange;
end;
end;
При изменении в первом поле Edit1 происходит фильтрация
vladrvv вне форума Ответить с цитированием
Старый 02.12.2014, 11:47   #134
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от vladrvv Посмотреть сообщение
К примеру Tdbf. Пытаюсь устанавить нижнюю границу SetRange через значение Edit1.Text.

Вторая строчка не срабатывет. Скорее всего это связано с кодировкой UTF
Я внес изменения, можете обноситься.
Есть одна особенность.
пример.
Код:
method TMainForm.Button1Click(Sender: TObject);
var
  B: Integer;
  S, S2: String;
begin
  S = 'ИСПРАВЛЕНО';
  B = Ord(S[3]) + 3;
  S2 = Chr(B);
  ShowMessage(S2);
end;
Ord принимает текст в формате UTF8, но возвращает код символа ansi.
Chr принимает код символа анси, но возвращает UTF8.

Обнаружил грандиозный косяк.
В Linux, через параметр в метод невозможно передать строку Ansi (В Win все нормально). Для передачи параметров создается VarArray, там строка Ansi коверкается, пока не понял, что там происходит и как с этим бороться. Просто через Variant передача происходит нормально, через VarArray нет. Поэтому стоит пока избегать выражений типа:
Код:
method TMainForm.Button2Click(Sender: TObject);
var
  S: string;
begin
  S = UTF8ToCP1251('Привет'); //Тут все норм
  Edit1.Text = CP1251ToUTF8(S); //S содержит правильное значение. В CP1251ToUTF8 приходит косяк.
end;
ps.
По поводу CreateClass('ClassName') и тому подобное - сделать не удастся, только явное указание класса TMyClass.Create.
К сожалению сделать так чтобы полностью работало как Delphi или Lazarus не удастся. Нужно быть к этому готовым и искать другие варианты.
Rik вне форума Ответить с цитированием
Старый 02.12.2014, 17:59   #135
vladrvv
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 59
По умолчанию

На странице 4 форума(призентация Дизеля), запись 56, показан интересный Грид.
Это какой из Дизеля?
А демонстрационный пример , раскрывающий все достоинства грида, можно?
vladrvv вне форума Ответить с цитированием
Старый 02.12.2014, 23:19   #136
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от vladrvv Посмотреть сообщение
На странице 4 форума(призентация Дизеля), запись 56, показан интересный Грид.
Это какой из Дизеля?
А демонстрационный пример , раскрывающий все достоинства грида, можно?
Этот грид TxDBGrid является клоном стандартного грида, входит в состав пакета visualtech, пакет после установки в Lazarus создает в панели компонентов закладку VisualTech (В дизайнере Дизель-паскаль, расположен на такой-же закладке). В пакете с десяток компонентов, один из них TxDBGrid.
Сетка имеет измененное оформление, которым можно управлять (свойства xStyle и TitleStyle), при желании, внешний вид можно привести к классическому. Отличительные особенности:
Сетка может отображать 2 поля в одном столбце. У каждого столбца есть свойство xFieldName - в нем задается имя второго поля (в заголовке соответственно есть xCaption), если назначено второе поле, сетка переходит в двухэтажный режим, при желании сетку можно раздвинуть и без использования второго поля, установив свойство DoubleRowHeight в True. Для управления высотой строк, есть дополнительное свойство IncRowHeight, которое позволяет ещё увеличить высоту строки. Это может быть полезно для отображения длинных строк. Сетка умеет переносить текст в ячейках (TxColumn.WordWrap и TxColumn.xWordWrap, соответственно для заголовков столбцов Title.WordWrap и Title.xWordWrap). С помощью IncRowHeight можно раздвинуть высоту строк так, чтобы перенесенный текст влазил полностью.
Сетка умеет отрисовывать изображения из TImageList в ячейках в зависимости от значения поля. У сетки есть свойство Images в котором выбирается библиотека рисунков. У каждого столбца есть 2 доп. свойства: DrawImage:Boolean и ImageIndexes в котором задается для какого значения поля какую иконку рисовать, у этого свойства есть визуальный редактор. Если DrawImage=True а в ImageIndexes ничего нет, и поле целочисленное, сетка будет производить прямую отрисовку, изображение из библиотеки будет выбираться с тем-же индексом что и значение поля.
Сетка может автоматически выравнивать ширину столбцов в процентном отношении к общей ширине сетки. Процент задается в свойстве столбца PrcWidth, у сетки в Options должно быть включено xdgAutoSizeColumns. Соответственно, сумма PrcWidth всех колонок не должна превышать 100.
Сетка имеет "живой" курсор, даже если выделена вся строка.
При протягивании полосы прокрутки, данные автоматически прокручиваются.
Удерживая Ctrl и вращая колесо мыши можно масштабировать размер шрифта.
Свойство сетки UseAutoFileter, если True, то при нажатии на Ctrl+F вызывает форму автофильтра, фильтр предлагается по полю, в котором стоит курсор. При нажатии в форме фильтра на OK, принудительно назначает для набора данных, с которым связана сетка, свой обработчик OnFilterRecord (при сбросе фильтра - освобождает).
Можно задать автосортировку данных в столбце при щелчке на заголовке (При первом нажатии устанавливается возрастающий порядок, при втором убывающий, отрисовывается соответствующая иконка в заголовке). В Дизель-паскаль эта опция включена по умолчанию и будет работать для компонентов IBX, ZEOS, TxDBF(для DBF создается индекс), TSDFDataSet. В Lazarus при использовании сетки с этой опцией нужно: в сетке установит свойство AutoSort = Ture, в модуле XDBGrids есть глобальная переменная
Код:
TAutoSortDataSet = procedure (DataSet: TDataSet; Column: TxColumn; CellCursorPos: TCellCursorPos);
var
  AutoSortDataSet: TAutoSortDataSet;
На эту переменную нужно назначить процедуру управляющую сортировкой данных. Пример такой процедуры есть в CrossMachine в модуле CrossMachineMain процедура OnAutoSortDataset.
Если работает сортировка, по сортированному полю можно назначить AutoLocate. Для этого, у сетки в Options xdgAutoLocate установить в True, xdgRowSelect=True на свойство LocateInfoPanel назначить любую TPanel. В Дизель-паскаль при создании формы через Сервис->Мастер форм, сетка на форме создается со всеми включенными опциями сортировки и AutoLocate (Для TxDBF AutoLocate работает не корректно).
Если Вы для вставки, редактирования, удаления, выбора записи определили действия (TAction), их можно назначить на сетку. Если у сетки на InsertAction назначено действие, оно будет вызываться., при нажатии в сетке на клавишу <Ins>. Если у сетки назначено EditAction, оно будет вызываться при нажатии на <F4>. Если у сетки назначено DeleteAction, будет вызываться при нажатии на <Ctrl>+<Del>. Если назначено SelectAction, будет вызываться при нажатии <Enter> или двойном щелчке мышью.
Изображения
Тип файла: jpg xdbgrid1.jpg (23.1 Кб, 149 просмотров)
Тип файла: jpg xdbgrid2.jpg (18.9 Кб, 142 просмотров)

Последний раз редактировалось Rik; 03.12.2014 в 00:29.
Rik вне форума Ответить с цитированием
Старый 07.12.2014, 20:34   #137
vladrvv
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 59
По умолчанию

FormsBar

Не пойму как кнопочки на него добавляются
vladrvv вне форума Ответить с цитированием
Старый 08.12.2014, 14:31   #138
vladrvv
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 59
По умолчанию

разобрался
vladrvv вне форума Ответить с цитированием
Старый 08.12.2014, 15:16   #139
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от vladrvv Посмотреть сообщение
разобрался
Вот, ещё пример посмотрите...
http://visual-t.ru/files/FormsBar.lm9
Rik вне форума Ответить с цитированием
Старый 09.12.2014, 10:57   #140
vladrvv
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 59
По умолчанию

Пример с Формбаром
Неуловимые мной ошибки при повторном открытии форм.
Посмотрите.
vladrvv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что же я написал? Sibedir Свободное общение 26 04.10.2010 05:01
Я написал текстовую игру... saggy Софт 11 05.06.2010 22:32
Написал редактор карт sasha1993 Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 18.07.2009 21:31
Написал прогу в паскале... deu4er Помощь студентам 2 19.11.2008 20:08
Написал бэкдор, оцените KORN Софт 7 18.11.2007 08:55