Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress (часть 4)

Автор: Lena44
Дата сообщения: 01.02.2012 11:08
>Например, у вас 5 структурных подразделений. Это значит у вас 5 таблиц? Или 5 записей? Или еще что-то?

Пять таблиц. Пять структурных подразделений имеют пять отдельных таблиц. Каждая таблица должна быть привязана к своему подразделению. Согласно схеме 4-и колонки в этих таблицях:
Код СП
Код СВ
Назва СВ
Коментар

Я не говорю, что вариант с ClientDataSet оптимальный. Программа однопользовательская, вот думаю как лучше реализовать.
Автор: andreybear
Дата сообщения: 01.02.2012 11:32
Lena44
Непонятно, почему вы записи называете таблицами, пусть будут таблицы.
В каком виде данные получаете? 10 ClientDataSet'ов?
Автор: Lena44
Дата сообщения: 01.02.2012 11:54

Цитата:
В каком виде данные получаете?


Я пока ничего не получаю. Изначально, задача - пользователь должен сам создовать дерево в программе. В момент создания узла структурного подразделения, я должна создать на диске соотвесвующую таблицу, в момент создания ветки стуктурное отделение, я должна создать на диске соответсвующую таблицу и т.к. далее. При последующей навигации по этому дереву пользователь должен видеть таблицу которая соотвесвует выделенному узлу. Перешел на узел – открылась талица, что-то туда пользователь может записать. Щелкнул по другому узлу открылась другая таблица…


Цитата:
10 ClientDataSet'ов


Сколько ClientDataSet-ов не известно. Их будет столько сколько пользователь создаст узлов. Я ClientDataSet-ы планирую создовать динамически. Я просто пока не представляю как можно сделать по другому эту задачу.




Автор: wasilissk
Дата сообщения: 01.02.2012 11:58
Lena44
инетересная тема, думаю все вопросы будут сняты когда вы определитесь со способом хранения всей этой информации, но все это уже не относится к сабжу темы форума.
Предлагаю создать отдельную тему и перенести обсуждение туда, иначе придет самизнаетекто и потребует этого же, только уже совсем другим тоном.
Автор: andreybear
Дата сообщения: 01.02.2012 12:17
wasilissk
Согласен!))
Автор: Dima335
Дата сообщения: 01.02.2012 21:21
andreybear

Цитата:
Если в design time, то в Properties в свойстве Items прописываешь необходимые элементы.
Если в run time, то вот пример для 0 колонки:

Код:
var i: integer;
    cmbProp: TcxComboBoxProperties;
begin
  cmbProp := TcxComboBoxProperties(BandedView.Columns[0].Properties);
  for i := 1 to 5 do
    cmbProp.Items.Add('Элемент ' + IntToStr(i));
end;

Ок, спасибо. Для cmbProp наверное free еще надо сделать? И можно еще вопрос: как обратиться к конкретному combobox, находящемуся в i-й колонке в j-й строке, узнать его itemindex или поменять его?
Автор: andreybear
Дата сообщения: 02.02.2012 04:54
Dima335

Цитата:
Для cmbProp наверное free еще надо сделать?

А смысл? При выходе из метода ее время жизни закончится.)

Цитата:
как обратиться к конкретному combobox, находящемуся в i-й колонке в j-й строке, узнать его itemindex или поменять его?

На примере 0 колонки:

Код: procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
with View do
begin
if not Site.Focused then
Site.SetFocus;
// Добавление записей в таблицу и установка свойства ItemIndex для 0 колонки
for i := 0 to TcxComboBoxProperties(Items[0].Properties).Items.Count - 1 do
begin
Controller.FocusedRecordIndex := DataController.AppendRecord;
Controller.EditingController.ShowEdit(Items[0]);
with TcxComboBox(Controller.EditingController.Edit) do
begin
ItemIndex := i;
PostEditValue;
end;
Controller.EditingController.HideEdit(true);
DataController.Post;
end;
// Показ значения ItemIndex последней записи
Controller.FocusedRecordIndex := DataController.RecordCount - 1;
Controller.EditingController.ShowEdit(View.Items[0]);
ShowMessage(IntToStr(TcxComboBox(View.Controller.EditingController.Edit).ItemIndex));
Controller.EditingController.HideEdit(false);
end;
end;
Автор: MagistrAnatol
Дата сообщения: 02.02.2012 13:23
Народ, есть грид и у одной колонки Properties=ComboBox
как достучаться к свойству Items - надо программно заполнять список ???
Автор: wasilissk
Дата сообщения: 02.02.2012 13:33
MagistrAnatol
TcxCustomComboBoxProperties(Grid.Columns[x].Properties).Items
Автор: kirdub
Дата сообщения: 02.02.2012 16:29
Добрый вечер.
Может кто делал так.
Мне необходимо построить дерево объектов
Дерево думал строить в cxVirtualTreeList
Но необходимо чтобы в каждой строке дерева было несколько строк.
Вначале думал как нибудь привязать cxVirtualTreeList и cxGrid, чтобы Tree показывал дерево, а grid все остальные данные, но как то привязка получается очень муторная.
А сделать объединение строк в Tree не нашел инфу о такой возможности.

Картинка прилагается Картинка

Добавлено:
Сам нашел решение, видать заработался не сразу обратил внимание)))
у колонки есть свойство RowIndex
Автор: Dima335
Дата сообщения: 02.02.2012 21:50
andreybear
У меня ошибка какая-то . В строке
ItemIndex := i;
написано ''' is not a valid integer value, хотя i типа integer.
Заполнялся combobox до этого вроде нормально.
Автор: andreybear
Дата сообщения: 03.02.2012 03:06
Dima335

Цитата:
написано ''' is not a valid integer value, хотя i типа integer.

При ItemIndex := StrToInt(''); такая же ошибка возникнет.))
Какая версия DevExpress? Попробуйте индекс жестко задать, например, ItemIndex := 1.
Автор: salexn1
Дата сообщения: 03.02.2012 08:16
Dima335
а если так
ItemIndex := StrToIntDef(i, -1);
Автор: MagistrAnatol
Дата сообщения: 03.02.2012 09:47
wasilissk
TcxCustomComboBoxProperties(V_UpgPrg->Columns[1]->Properties).Items->Add(pTmpBuf->sv100_name)
надо делать при каждом добавлении новой записи или моно один раз ?
пробовал и при открытии формы и после апенда чет не добавляются записи в лист ???
Автор: wasilissk
Дата сообщения: 03.02.2012 09:58
MagistrAnatol
Один рвз. Вы случайно этот колумн не пересоздаете потом?
Поставьте брейкпоинт на этой строчке, проверьте что итем добавился.
Автор: MagistrAnatol
Дата сообщения: 03.02.2012 10:09
wasilissk
да не, не пересоздаю

Добавлено:
Могут быть приколы шо я с делфи на билдер неверно перевел синтаксис

Добавлено:
естесно не правильно

Код: [no] TcxCustomComboBoxProperties *Props = (TcxCustomComboBoxProperties*)V_UpgPrgCOMP_NAME->GetProperties();
Props->Items->Add( pTmpBuf->sv100_name);
[/no]
Автор: Dima335
Дата сообщения: 03.02.2012 18:29
Версия DevExpress 52.
ItemIndex := StrToIntDef(i, -1) и т. д. - не помогает
Попробовал поставить 56 версию - то же самое. Может я неверно проставил свойства колонки грида?
items добавляю так:


Код:
cmbProp:=TcxComboBoxProperties(cxGrid1BandedTableView2.Columns[0].Properties);
cmbProp.Items.Clear;
for i:=0 to 3 do begin
cmbProp.Items.Add(sn[i]);
end;
Автор: andreybear
Дата сообщения: 06.02.2012 03:16
Dima335
Попробуйте у себя:
[more=dfm+pas]
// pas
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit,
cxDropDownEdit, cxGridCustomTableView, cxGridTableView, cxGridCustomView,
cxClasses, cxGridLevel, cxGrid, StdCtrls, cxDBLookupComboBox;

type
TForm1 = class(TForm)
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
View: TcxGridTableView;
ViewColumn1: TcxGridColumn;
ViewColumn2: TcxGridColumn;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
View.Items[0].PropertiesClass := TcxComboBoxProperties;
for i := 1 to 5 do
TcxComboBoxProperties(View.Items[0].Properties).Items.Add('Элемент ' + IntToStr(i));
end;

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
try
with View do
begin
if not Site.Focused then
Site.SetFocus;
// Добавление записей в таблицу и установка свойства ItemIndex для 0 колонки
for i := 0 to TcxComboBoxProperties(Items[0].Properties).Items.Count - 1 do
begin
Controller.FocusedRecordIndex := DataController.AppendRecord;
Controller.EditingController.ShowEdit(Items[0]);
with TcxComboBox(Controller.EditingController.Edit) do
begin
ItemIndex := i;
PostEditValue;
end;
Controller.EditingController.HideEdit(true);
DataController.Post;
end;
// Показ значения ItemIndex последней записи
Controller.FocusedRecordIndex := DataController.RecordCount - 1;
Controller.EditingController.ShowEdit(View.Items[0]);
ShowMessage(IntToStr(TcxComboBox(View.Controller.EditingController.Edit).ItemIndex));
Controller.EditingController.HideEdit(false);
end;
except
on E: Exception do
ShowMessage(E.Message);
end;
end;

end.

// dfm
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 498
ClientWidth = 693
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object cxGrid1: TcxGrid
Left = 8
Top = 8
Width = 409
Height = 273
TabOrder = 0
object View: TcxGridTableView
NavigatorButtons.ConfirmDelete = False
DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
DataController.Summary.DefaultGroupSummaryItems = <>
DataController.Summary.FooterSummaryItems = <>
DataController.Summary.SummaryGroups = <>
OptionsData.Appending = True
object ViewColumn1: TcxGridColumn
end
object ViewColumn2: TcxGridColumn
end
end
object cxGrid1Level1: TcxGridLevel
GridView = View
end
end
object Button1: TButton
Left = 144
Top = 408
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 1
OnClick = Button1Click
end
end
[/more]
Автор: salexn1
Дата сообщения: 06.02.2012 10:33
Dima335
а зачем Index?
не проще использовать EditValue какой нить?
Зачем эти танцы с бубном?
Автор: JackRoto
Дата сообщения: 06.02.2012 12:45
Добрый день!
Обращаюсь с нестандартным вопросом - прошу платную услугу!
Мне нужен пример такого приложения написанного на Delphi:

1. Главное приложение:
а. MDI-приложение
б. Подключается к любой "мини базе" (можно даже 1 таблица)
в. Содержит одну главную форму и одну MDI-Child
г. В MDI-Child использует DevExpress (одного cxGrid - достаточно)
д. Использует Skin'ы от DevExpress
е. Использует TcxStyleRepository от DevExpress

2. Динамически загружаемая DLL
а. Вызывается из главного приложения
б. Получает коннект от главного приложения
г. Содержит одну MDI-Child форму
д. Форма использует DevExpress (одного cxGrid - достаточно)
д. cxGrid использует Skin'ы DevExpress (из главного приложения)
д. cxGrid использует TcxStyleRepository DevExpress (из главного приложения)
е. Не знаю как правильно сформулировать: DLL использует максимально возможное кол-во данных от главного приложения (типа скины DevExpress, TcxStyleRepository, ...). Главное, чтобы размер DLL был минимален.

За данную услугу сделаю оплату
1. WebMoney
2. Если на Украине, то перечислю на карточку.

Оплату произведу след. образом:
1. Высылайте Ваше работающее приложение в виде EXE и DLL.
2. Если все работает, то вышлю деньги, а Вы мне исходники.
Спасибо!

P.S. Если все будет ОК, то выложу потом на форуме, если кому-нибудь нужно будет!
P.S.S. Я думаю многие задаются таким вопросом.
P.S.S.S Главное, чтобы данная программа была написана как можно более правильнее при использовании DevExpress.

Зачем мне это нужно:
У меня большой проект и хочу разбить на DLL, т.к. появилась необходимость.
Автор: andreybear
Дата сообщения: 06.02.2012 13:40
salexn1

Цитата:
а зачем Index?
не проще использовать EditValue какой нить?
Зачем эти танцы с бубном?

Какой индекс?
Dima335

Цитата:
sn[i]

Что за массив?
Автор: salexn1
Дата сообщения: 06.02.2012 13:51
andreybear
Сорри, ItemIndex
Автор: andreybear
Дата сообщения: 06.02.2012 13:58
salexn1
Насколько я знаю, в EditValue в TcxComboBox хранится текст, который отображается в самом редакторе, а не ItemIndex. Поправьте, если ошибаюсь.
Автор: salexn1
Дата сообщения: 06.02.2012 14:57
andreybear
Да, вы правы, но если у чела проблемы с ItemIndex, то через EditValue легко выйти на ItemIndex - это как минимум. Ну а потом, привязываться к ItemIndex - вообще не гуд, т.к. добавление одного элемента (особенно в начало списка) ломает всю логику напрочь
Автор: Dima335
Дата сообщения: 06.02.2012 16:18

Цитата:
Что за массив?

массив строк
Автор: andreybear
Дата сообщения: 06.02.2012 17:28
salexn1
Согласен, впрочем, изменение названий этих самых Items так же сломает логику.
Dima335
Вы решили проблему?
Автор: mdid
Дата сообщения: 07.02.2012 11:25
хелп плиз с maskedit
в хелпе у меня по editmask только невразумительно

Цитата:
Identifies the main attributes specific to an editor.

Syntax
property Properties: TcxCustomMaskEditProperties;
Description

Use Properties to set specific attributes which control the editor behavior. They define the alignment of an editor's contents, the collection of buttons that can be displayed within this editor, the read-only status, etc. Properties specific to text editors are stored in the TcxCustomMaskEditProperties class.

и все
задача сделать поле для gps координат
накрутил я \d+.\d{1,12} и вроде подходит...вот только знак минус не ставится впереди..как сделать возможность устанавливать минус...
дело вроде плевое но хелп у меня скуден((
Автор: andreybear
Дата сообщения: 07.02.2012 11:38
mdid
Вроде так:
-?\d+.\d{1,12}
Автор: salexn1
Дата сообщения: 07.02.2012 11:40
mdid
опоздал...
Автор: mdid
Дата сообщения: 07.02.2012 11:41
andreybear
пасиб..то что надо

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.