Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2

Модерирует : ShIvADeSt

ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express




 
Сами прирученные компоненты частенько приходят на водопой сюда
 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, начало тут
 

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:16 29-01-2007 | Исправлено: VitaliM, 15:47 24-11-2008
raspe



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dennica
Ну а чего там прописывать. Можно каждому View на событие ShowGridMenu поставить одну функцию обработчик, зато и настройка более точная - каждому вью можно свое контекст меню настроить

Всего записей: 420 | Зарегистр. 22-07-2005 | Отправлено: 12:36 28-06-2007
saltmi1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ошибка при обработке Float в TcxSpreadSheetBook
Столкнулся с неприятностью. Использую Access, ADO компоненты, TcxSpreadSheetBook. Данные из SpreadSheetBook заносятся в таблицу. Поле РЕЗУЛЬТАТ типа TFloatField.
Вписываю например 12,5, но в результате Grid отображает 12,500453453631231231 или что-то в этом роде. С целыми числами проблем нет.
Процедура считывания:
     
Код:
FieldByName('RESULT').AsFloat :=
         StrToFloat(cxSpreadBook.ActiveSheet.GetCellObject(2, 3).Text;

Сталкивался ли кто-нибудь с таким явлением?

Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 13:57 28-06-2007
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saltmi1
Неочевидные особенности вещественных чисел

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 14:33 28-06-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dennica
Там всё через код делается. Т.е. все настройки визуальных компонентов в итоге преобразуются в код, доступный для программера. Мне эта фича, честно говоря, тоже не нравится, но есть любители именно такого подхода.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 14:54 28-06-2007
saltmi1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA
Статья очень интересная. Думаю, что понял что происходит. Но не понял как с этим бороться. В статье пишется:
"Рецепты преодоления этих проблем я сознательно не излагаю"
Я бы и поискал сам решение, если бы знал в какую сторону надо двигаться. Какой нибудь конкретный пример преодоления этой проблемы очень бы помог.  
А вообще интересно, что впервые сталкиваюсь с этим, хотя судя по статье должен был столкнуться давным-давно. Наверное автор прав, и ко мне подходит этот смайлик:
Или, все еще осознаю свою несостоятельность и прошу помощи.

Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 16:01 28-06-2007
raspe



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saltmi1
Попробуй поиграться с форматом отображения. Или поставь маску на редактор колонки

Всего записей: 420 | Зарегистр. 22-07-2005 | Отправлено: 16:22 28-06-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saltmi1
На процедуру считывания можно накрутить ROUND, т.е. округление до нужного количества знаков после запятой.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 16:58 28-06-2007
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saltmi1
Сначала необходимо ответить себе на вопросы
Что храним в этом поле?  Значение целочисленное, с плавающей/фиксированной запятой(если да, то необходимая точность)?
После чего определяем тип поля в БД и правила форматирования значения при вводе/выводе.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 17:14 28-06-2007
saltmi1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
raspe Dronton2 OXDBA
Спасибо за советы. Попробую всё. В таблице будут храниться данные медицинских тестов.
 
Добавлено:
raspe Dronton2 OXDBA
Я знаете товарищи подумал и решил, что этого мне никто не позволит, если я медицинскую дату начну округлять и конвертировать. Изменю поле на стринг. Тогда когда нужно будет число для формул, выведу его через SQL. А уж юзеру покажу только точные стринги которые он в базу ввел. Понял так, что Developer Express собирается добавить в SpreadSheetBook возможность утапливать в сетку контролы. Буду ждать и надеяться.
Если кого интересует, нашел вот такие примеры решения ппроблемы с вещественными числами:
----------------------

Код:
 
uses Math;
function Reject(num: Extended; col: integer): Extended;
var
  divider: Extended;
begin
  try
    divider:=IntPower(10, col);
    result:=Round(num*divider)/divider;
  except
    if col>0
      then result:=num
      else result:=0;
  end;
end;

----------------------

Код:
 
function RoundEx(chislo: double; Precision: Integer): string;
var
  ChisloInStr: string;
  ChisloInCurr: currency;
begin
  ChisloInCurr := chislo;
  Str(ChisloInCurr: 20: Precision, ChisloInStr);
  ChisloInStr[Pos('.', ChisloInStr)] := ',';
  RoundEx := Trim(ChisloInStr);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := RoundEx(StrToFloat(Edit1.Text), 2);
end;

----------------------

Код:
 
function Rounder(var Value: Double; Decimals: Integer): Double;
 var
   j: Integer;
   A: Double;
 begin
   A := 1;
   case Decimals of
     0: A := 1;
     1: A := 10;
     else
       for j := 1 to Decimals do
         A := A * 10;
   end;
   Result := Int((Value * A) + 0.5) / A;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 var
   Value: Double;
 begin
   Value := 23.56784;
   //Result is 23.57  
  label1.Caption := FloatToStr(Rounder(Value, 2));
 end;
 


Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 17:47 28-06-2007
WebInc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dennica
Спасибо, вчера не успел ответить - отрубили инет. Нашел эти два параграфа, никак не мог выйти на них через поиск.
raspe Примерно к такому выходу я ипришел
Dronton2 У меня есть офлайновская, но я наткнулся сначало на описание но подумал что это не то, оказалось очень даже то
 
Всем спасибо за помощь

Всего записей: 28 | Зарегистр. 14-02-2005 | Отправлено: 02:13 29-06-2007
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saltmi1

Цитата:
Изменю поле на стринг.

Типы с фиксированной точкой в медицине совсем никак?

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 16:05 29-06-2007
saltmi1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA
Я имел в виду, что если я ввожу в программу 1,54 то хочу точнос так и получить. Я извиняюсь если чего не пониманию. Но в любом случае сделаю так как решил - стрингами. В будующем можно конечно что-то другое попробовать.

Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 19:26 30-06-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребяты, есть у кого примеры работы с VerticalGrid? Те, что в комлекте слабоваты. Вот например я созжал несколько Rows, одна из них типа combobox, как программно наполнить этот комбобокс, и как получить выбранное пользователем значение? Справка есть, но она для D2006, а у меня D2007. Может есть в инете справка в формате CHM?
Заранее благодарен.
 
Добавлено:
Код не компилируется
 

Код:
 
(rIs.Properties as TcxComboBoxProperties).Items.CommaText := '';
 

 
Ошибка:
[DCC Error] uAddApart2.pas(115): E2010 Incompatible types: 'TcxComboBoxProperties' and 'TcxEditorRowProperties'

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:34 02-07-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
Нужно:

Цитата:
 
(rIs.Properties.EditProperties as TcxComboBoxProperties).Items.CommaText := '';
 

 
В шапке есть ссылка, куда компоненты приходят на водопой. Там можно получить файлы *.hlp

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 15:34 02-07-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код работает нормально

Код:
 
procedure TfmAddApart2.ToolButton1Click(Sender: TObject);
begin
  (rIs.Properties.EditProperties as TcxComboBoxProperties).Items.Clear;
  fibdsState.Open;
  fibdsState.First;
  while not fibdsState.Eof do begin
    (rIs.Properties.EditProperties as TcxComboBoxProperties).Items.AddObject(fibdsState.FBN('NAME').AsString,
                                                                             Pointer(fibdsState.FBN('ID').AsInteger) );
    fibdsState.next;
  end;
end;
 

 
А как теперь выудить тот самый ID, той строки которую пользователь выбрал?
Подскажите, что не так в этом коде?

Код:
 
ShowMessage(IntToStr(Integer((ris.Properties.EditProperties as TcxComboBoxProperties).Items.itemindex)));
 

ругается на itemindex при компиляции, ну конечно, ведь у TcxComboBoxProperties нет itemindex, зато он есть у TcxComboBox

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:01 02-07-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
Смотря в какой момент нужно получить ID. Можно, например, использовать ris.Properties.Value, если этот ID указан в KeyFieldNames/

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 17:09 02-07-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у меня не LookupCombobox, а просто combobox, по нажатию кнопки нужно получить

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:16 02-07-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
TcxComboBoxProperties  не содержит в предках TcxComboBox. Следовательно приравнивать эти два класса нельзя. Следовательно ожидать у одного всей функциональности другого - тоже. В твоем случае если тебе нужен именно индекс элемента, используй методы класса Tstrings.

Код:
ShowMessage(IntToStr((cxVerticalGrid1EditorRow1.Properties.EditProperties as TcxComboBoxProperties).Items.IndexOf(VarToStr(cxVerticalGrid1EditorRow1.Properties.Value))));
 

А лучше используй в качестве EditProperties ImageComboBox.

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 07:19 03-07-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По поводу
Цитата:
.Items.IndexOf
, а если в комбобоксе 3 совершенно одинаковых значения?

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 08:42 03-07-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
а какая разница тогда какой индекс из трех ?

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 08:45 03-07-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2
ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru