Форум: "Начинающим";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];
Внизальтернатива stringgrid Найти похожие ветки
← →
Тимоха (2009-01-26 21:19) [0]Сущ. альтернатива stringgrid? только не визуальная. Т.е. мне нужно иметь список из записей. может есть какие то готовые юниты для этого?
← →
Медвежонок Пятачок © (2009-01-26 21:20) [1]классы, рабоающие с xml
← →
Anatoly Podgoretsky © (2009-01-26 21:28) [2]stringgrid не бывают не визуальными.
← →
Медвежонок Пятачок © (2009-01-26 21:31) [3]мне нужно иметь список из записей
TClientDataSet
← →
Тимоха (2009-01-26 22:46) [4]TClientDataSet весьма хорош.
правда записей у меня чаще всего будет <100 но будут и случаи когда по 100-1000
← →
Медвежонок Пятачок © (2009-01-26 22:52) [5]и что ?
← →
Тимоха (2009-01-26 22:56) [6]никаких файлов не потребуется при переносе программы на другой компьютер?
← →
{RASkov} © (2009-01-26 23:06) [7]> Сущ. альтернатива stringgrid? только не визуальная.
type TMyNoneVisibleGrid = array of array of String;
:)
← →
Тимоха (2009-01-26 23:13) [8]все ничего, только никак не могу получить текст из какой-нибудь записи. скажем из 3 столбца, 2 строчка.
← →
Медвежонок Пятачок © (2009-01-26 23:15) [9]у тебя ошибка в программе
← →
Тимоха (2009-01-26 23:20) [10]т.е. мне нужно найти запись у которой в первом столбце например строка "2132" и получить значение 3 столбца.
ClientDataset:= TClientDataSet.Create(self);
with ClientDataset.FieldDefs do begin
Add("id",integer);
Add("name",ftString,50);
Add("code",ftString);
end;
ClientDataset.CreateDataSet();
ClientDataset.AppendRecord([112,"Vasia","12312342"]);
ClientDataset.AppendRecord([2132,"Masha","72942821"]);
ClientDataset.AppendRecord([489111,"Kolya","6209562"]);
← →
Медвежонок Пятачок © (2009-01-26 23:26) [11]ну если нужно найти, то надо искать.
← →
Тимоха (2009-01-26 23:39) [12]у меня не получается. Прошу помочь)
← →
Медвежонок Пятачок © (2009-01-26 23:41) [13]нашел.
значение третьей колонки для данного условия поиска = "72942821"
← →
{RASkov} © (2009-01-27 00:02) [14]> [10] Тимоха (26.01.09 23:20)
procedure TForm1.Button1Click(Sender: TObject);
begin
with TClientDataSet.Create(nil) do try
with FieldDefs.AddFieldDef do begin
DataType := ftInteger;
Name := "id";
end;
with FieldDefs.AddFieldDef do begin
DataType := ftString;
Size := 50;
Name := "name";
end;
with FieldDefs.AddFieldDef do begin
DataType := ftString;
Name := "code";
end;
CreateDataSet;
AppendRecord([112,"Vasia","12312342"]);
AppendRecord([2132,"Masha","72942821"]);
AppendRecord([489111,"Kolya","6209562"]);
ShowMessage(Lookup("id", 2132, "code"));
finally
Free;
end;
end;
← →
Плохиш © (2009-01-27 00:17) [15]
> Медвежонок Пятачок © (26.01.09 23:41) [13]
>
> нашел.
> значение третьей колонки
Врёшь, там нет третьей колонки :-P
← →
Тимоха (2009-01-27 00:17) [16]RASkov, большое тебе человеческое спасибо!!!!! Уже не раз выручаешь!!!!!!!
← →
Anatoly Podgoretsky © (2009-01-27 00:46) [17]> Тимоха (26.01.2009 23:20:10) [10]
Так ты даже и не пытаешься, а приводишь вместо это код ввода записей.
← →
Германн © (2009-01-27 01:53) [18]
> {RASkov} © (27.01.09 00:02) [14]
На "исходниках" ты был бы богом! На тебя б там молились!
← →
{RASkov} © (2009-01-27 09:36) [19]> [18] Германн © (27.01.09 01:53)
Боги злыми не бывают ....наверное. А я злой и жестокий....
← →
MsGuns © (2009-01-27 11:36) [20]А чем все же плох стрингрид ?
А показывать его вовсе не обязательно.
датасет по сравнению с сеткой имеет преимущества датасета, т.е. поиски, сортировки, фильтры, сохранение в локальном файле и т.д. Если все это не нужно (хотя и в стрингриде это все не слишком сложно реализовать), то TClientDataSet не нужен.
однако имеет и недостатки. Например, "однородность" данных в колонках
← →
sniknik © (2009-01-27 12:27) [21]> А чем все же плох стрингрид ?
а чем все же плох стакан?
> А показывать его вовсе не обязательно.
а забивать им большие гвозди вовсе не обязательно, можно только мелкие сапожные, чтобы не разбился.
> хотя и в стрингриде это все не слишком сложно реализовать
а удобства, в виде ручки, их же легко приделать...
цели у них разные. разве не очевидно?
← →
Тимоха (2009-01-27 12:32) [22]Согласен что реализовать, добавление, удаление "записей" в стринггриде реализовать не трудно, так же как и запись в файл данных.
ClientDataSEt привлек тем что весьма удобно вытаскивать данные lookup"ом.
А в целом задача такая: добавление, изменение записи, удаление определенной записи. Визуально представлять данные не нужно. Таблица будет использоваться только для временного хранения данных.
← →
MsGuns © (2009-01-27 14:29) [23]>sniknik © (27.01.09 12:27) [21]
>цели у них разные. разве не очевидно?
Неа.. И тот, и другой предназначен для отображения информации в табличном виде, ку ?
>Тимоха (27.01.09 12:32) [22]
>А в целом задача такая: добавление, изменение записи, удаление определенной записи. >Визуально представлять данные не нужно. Таблица будет использоваться только для >временного хранения данных.
Если данные имеют табличную структуру и их необходимо сохранять по завершению и востаноаливать при запуске, то удобнее CDS (если, конечно, нельзя БД)
Если же последнее не нужно, то можно вообще обойтись без сеток, простым TList+record`ы или TObjectList
← →
Jeer © (2009-01-27 14:35) [24]
> sniknik © (27.01.09 12:27) [21]
>
> > А чем все же плох стрингрид ?
> а чем все же плох стакан?
А чем стакан вовсе и не плох ?
Пральна - тем, что "умеет" отображать данные в произвольно-двумерном виде при наличии "всего лишь" реляционно-выбранного датасета или его аналога.
А, чтобы извратиться на "шахматку" со стандартным DBGrid-ом, надо очень много "по-упражняться" с ХП.
← →
Тимоха (2009-01-27 15:59) [25]ку.
но TList+record вызвал затруднения в реализации :(
← →
Игорь Шевченко © (2009-01-27 16:02) [26]
> но TList+record вызвал затруднения в реализации :(
Это очень плохо. Надо задуматься
← →
MsGuns © (2009-01-27 16:19) [27]Блин, не помню название продукта, но весьма классный и по интерфейсу и по шустрости и по надежности, помню только что связан с торговлей и складом.
Так вот там все реализовано стрингридами или как они там в васике обзываются :)
Код вытаскивает данные с сервера, засовывает их в ОП а затем "выкладывает" в сетки.
Датасетов в понимании дельфи там нет вообще :)
← →
sniknik © (2009-01-27 16:36) [28]> Неа.. И тот, и другой предназначен для отображения информации в табличном виде, ку ?
а если подумать? один отображает то что хранит (и поэтому хранит мало, и в удобном для отображении формате), другой хранит и обрабатывает как данные, а отображают эти данные за него другие.
> Датасетов в понимании дельфи там нет вообще :)
да да, а в 1с они результат запроса (8-ка) из базы называют таблицей, но вот измениться ли от названия суть?
> А, чтобы извратиться на "шахматку" со стандартным DBGrid-ом, надо очень много "по-упражняться" с ХП.
почитай тему сначала...
тут весь смысл датасета не получении данных с сервера бд, а в формировании того что нужно на клиенте, вообще без бд. и запросов/хп, т.е. если нет проблем сформировать шахматку в стринггриде то и в датасете не будет. только упростится, изза того что данные можно держать в их реальных типах, и значит и любые операции с ними делать "найтивно".
← →
Jeer © (2009-01-27 17:25) [29]
> тут весь смысл датасета не получении данных с сервера бд,
Смысл датасета всегда состоит в получении и предоставлении "контролам" на клиенте "линейно-табличного" набора данных.
Все остальные извраты по превращению "недоделанного" набора данных ложатся на клиента.
← →
MsGuns © (2009-01-27 17:49) [30]>sniknik © (27.01.09 16:36) [28]
Просто охота поспорить ?
Ну-ну :)
← →
Медвежонок Пятачок © (2009-01-27 18:43) [31]Датасетов в понимании дельфи там нет вообще :)
<Цитата>
еще чуднее история.
названия продукта и производителя говорить не буду.
написано на vb6.
в качестве грида виндовый листвью.
трехзвенка. на сервере приложений данные тянутся запросами тупо в массивы, затем сериалиализуются в велосипедный двоичный формат и передатся на клиента. на клиенте цикл по строкам/колонкам.
+ все это отягощено отсутствием наследования в самом вб.
я когда узнал, и снова сел на стул, захотелось памятник поставить чувакам за трудолюбие.
← →
Palladin © (2009-01-27 18:49) [32]
> названия продукта и производителя говорить не буду.
просим! просим! :)
← →
Медвежонок Пятачок © (2009-01-27 18:50) [33]смысл датасета в этой ветке: двумерное хранилище значений, для которого не надо писать собственную загрузку/сохранение в отличие от TList + record.
← →
Медвежонок Пятачок © (2009-01-27 19:00) [34]но я бы все равно использовал голый xml как хранилище + ixmldomdocument.
загрузка/выгрузка есть.
поиск sql подобный есть.
много чего еще есть.
← →
MsGuns © (2009-01-27 22:42) [35]>sniknik © (27.01.09 16:36) [28]
>да да, а в 1с они результат запроса (8-ка) из базы называют таблицей, но >вот измениться ли от названия суть?
Не знаток 1С, но то, о чем ты говоришь, в 1С называется таблица значений, которая вообще-то не хранится постоянно в БД. Вернее результат запроса заносится для отображения в таблицу значений (циклом как указал Мишка с пятачком)
Таблицей же называется объект, как правило связанный с физической таблицей
Могу ошибаться, пусть поправят знатоки если что
← →
KSergey © (2009-01-28 09:10) [36]Ладно там со стринггридами, а массив динамический строк или записей чем не угодил?!!
← →
sniknik © (2009-01-28 10:24) [37]> а массив динамический строк или записей чем не угодил?!!
так его же нужно делать, а вопрос [0] стоял так
> нужно иметь список из записей. может есть какие то готовые юниты для этого?
готовый список из записей это как раз и есть рекордсет. все остальное "не готовое", либо визуальное (ограничение из начала вопроса ) типа стринггрид.
← →
Медвежонок Пятачок © (2009-01-28 10:27) [38]а массив динамический строк или записей чем не угодил?!!
угодит.
если ас пушкин напишет за нас процедуры его сохранения/загрузки на носитель.
← →
Anatoly Podgoretsky © (2009-01-28 10:28) [39]> Медвежонок Пятачок (28.01.2009 10:27:38) [38]
А если самому?
← →
Медвежонок Пятачок © (2009-01-28 10:35) [40]самому на такие мелочи не стоит отвлекаться.
а то не хватит времени на написание своего виндуза.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.05 c