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

» Вопросы по Delphi (все версии) - часть 4

Автор: greenpc
Дата сообщения: 23.05.2008 08:59
delover

Цитата:
А для чего в гриде свойства
SelectedRows.Count и
TDBGridOption = (...dgRowSelect...dgMultiSelect)

а кнопочка F1 работает ? или мне хелп цитировать?

Цитата:
Я так понимаю, что в программах они обычно не используются. Правильно?
нет не правильно. Смотря что нужно от задачи.

Цитата:
Так как если их использовать, то придётся превращать "порядковый номер записи в таблице", превращать в "ключевое поле".

пожалуйста не путаем теплое с мягким.

Цитата:
Может я что-то неправильно делаю?

это точно. У Вас,судя по вопросам, совсем отсутсвуют знания в области БД.
Советую почитать любую книгу в это области и часть вопросов сразу отпадет

Цитата:
Можете подсказать, или привести пример, когда используя грид можно не пользоваться ID?
Грид - это всего лишь удобное для нас отображение содержимого БД.

Цитата:
у меня прайс лист в одной таблице, а оформленный заказ в другой

ну и сделать связку master-detail.
Пример давать не буду - это базовые знания, без них Вы всего остального не поймете и следующий вопрос будет "что такое запросы"
Автор: lavren
Дата сообщения: 23.05.2008 13:46
Народ! Посоветуйте, пожалуйста, компоненты для работы с e-mail (pop3, imap, smtp).
Indy рулят до сих пор или получше появились?
Автор: OdesitVadim
Дата сообщения: 23.05.2008 15:34
lavren
В своё время я мучился с ними при отправке почты с вложениями. Потом нашёл Synapse (http://synapse.ararat.cz/doku.php). Это не совсем компоненты - это библиотека классов.
Также там есть библиотека для работы с COM портом - очень интересная.
Автор: panda2019
Дата сообщения: 24.05.2008 08:37
все привет, помогите пожалуйста.
Задание:
дан цикличный граф с разными весами дуг, нужно найти такую точку из которой диаметр будет минимальным.
здесь точка иметься ввиду что на ребре весом 10 будет 10 точек, надеюсь понятно объяснил.
но существует доказанная теория решения этой задачи.
нужно найти середину максимального ребра и найти противоположную точку(т.е. на другом конце ребра), это и будет искомой точкой.
а вот что я не могу сделать:
я задаю в таблице вершины(1; 2; 3; 4...n), ребра(1,2; 2,3; 3,4.... n,1) и
вес ребер (10; 5; 2.....)
и я не знаю как мне хронить в каком ребре я нахожусь, когда я буду идти до противоположной точки и как мне сделать что бы цикл переходил в последние ребра в первое
Автор: Maks150988
Дата сообщения: 24.05.2008 09:37
greenpc


Цитата:
ЗЫ: и конечно читаем азы если на апи
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // section name ---- Stations
LPCTSTR lpKeyName, // key name ---- Переменная
LPCTSTR lpDefault, // default string ---- значение по умолчанию
LPTSTR lpReturnedString, // destination buffer --- значение Переменной
DWORD nSize, // size of destination buffer
LPCTSTR lpFileName // initialization file name
);



Ну я вообщето также через эту функцию и читал ини файл. Вроде также... Хотя, ладно, пофиг. Забил на это дело...

Сейчас интересует DrawIconEx, а именно отображение черно-белой иконки вместо цветной. Пока пришло на ум только использование совместно с BitBlt, вроде там я видел значение для такой "манипуляции"... Хотя можно наверное проще поди? =)
Автор: Erazer
Дата сообщения: 25.05.2008 19:01
господа поделитесь опытом - кто нить пользуется экспертами для интеграции систем контроля версий в IDE ? если да то какими,а еще приятнее было бы линк на рабочий сабж. Athlant,VSS connexion,Source connexion я знаю но к ним нет лекарств под D2007
Автор: RomanTim
Дата сообщения: 25.05.2008 19:24
Erazer
Для Source (VSS) Connexion лекарство есть, в понедельник на работу попаду, положу куда-нибудь. Сам через SourceConnexion с ClearCase работаю
Автор: Erazer
Дата сообщения: 25.05.2008 21:09
RomanTim c нетерпением!!!! Пожалуйста, сорри за оффтоп - настрадался....
Автор: RomanTim
Дата сообщения: 26.05.2008 06:41
Erazer
Держи для Д2007, если для VSS или для другой делфи - переименуй соответсвенно дллку и подправь батник
hxxp://rapidshare.de/files/39523556/SC_D2007.rar.html
Автор: Dimoniusis
Дата сообщения: 26.05.2008 08:24
lavren предпочитаю ICS (http://www.overbyte.be) или библиотеку классов Synapse
Автор: lavren
Дата сообщения: 26.05.2008 10:23
Dimoniusis
OdesitVadim
А они бесплатны или искать FullSource нужно?
Автор: OdesitVadim
Дата сообщения: 26.05.2008 11:16
lavren
А перейти по ссылке, которую я написал? Там чётко написано, что с исходниками.
Автор: delover
Дата сообщения: 26.05.2008 14:33
greenpc

Цитата:
У Вас,судя по вопросам, совсем отсутсвуют знания в области БД.

Спасиба за лестное замечание. Мой двадцатилетний стаж в программировании - это далеко не повод считать себя спецом, например в EhLib-ах. Или вы полагаете, что поле SelectedRows относится к знаниям о БД? Смелое заявление.


Цитата:
Пример давать не буду - это базовые знания, без них Вы всего остального не поймете и следующий вопрос будет "что такое запросы"

Ладно. Про запросы мне ещё рановато изучать. Под специалиста косить поздно - видимо к рассуждениям о -->
{$IFDEF SUPPORT_ARRAY_FIELD}
TFIBArrayField=class(TBytesField)
мы ещё не готовы. Да и суть вопроса я видимо не смог передать. Но ещё надеюсь натолкнуться на ответ специалиста. Вопрос я задавал в теме:
Вопросы по Ehlib
Всё же интересует, почему ADO интерфейсы от MSSQL работают в десятки раз быстрее чем связка InterBase + FIB + EhLib? Я просто заметил что 2 тысячи выбранных записей в клибоард уходят медленнее, чем создание StringGrid из 1100 тысяч записей из данных ADO? Может быть специалист это когда твоя программа работает медленнее?

Автор: lavren
Дата сообщения: 26.05.2008 14:47
OdesitVadim
Извени в английском не силен, а там явно не указано!
Автор: greenpc
Дата сообщения: 26.05.2008 15:57
delover

Давайте не будем разводит оффтопик.

Цитата:
Или вы полагаете, что поле SelectedRows относится к знаниям о БД? Смелое заявление.
не будем вырывать ответ из контекста.
Извините если я Вас обидел
Ну теперь по сути
1.
Цитата:
Можно ли написать такую функцию RecNo_To_PrimaryKey: Variant?

Можно. Вопрос только зачем? Что Вы хотите этим получить?
Подумайте если Вы удалите хоть одну запись(я не считаю последнюю), что произойдет?
Вам прийдется заново переписывать все PrimaryKey и так же во всех связанных таблицах если они есть.


Цитата:
Всё же интересует, почему ADO интерфейсы от MSSQL работают в десятки раз быстрее чем связка InterBase + FIB + EhLib?
к сожалению повторить это не могу,
т.к. отсутсвует InterBase и работаю с Oracle.
В качестве совета - попробуйте напрямую из датасета получить данные, т.е. без всяких гридов и букмарков

Автор: OdesitVadim
Дата сообщения: 26.05.2008 16:10
delover

Цитата:
Я просто заметил что 2 тысячи выбранных записей в клибоард уходят медленнее, чем создание StringGrid из 1100 тысяч записей из данных ADO?

А строку для клипбоарда небось делаем так
s := s + новаязапись ?
вообще то сравнивем разные вещи. буфер обмена и стринггрид - разные. вот если фраза звучала как

Цитата:
Я просто заметил что 2 тысячи выбранных записей в клибоард уходят медленнее, чем 1100 тысяч записей из данных ADO в буфер обмена?

тогда можно было бы о чём то говорить.

Добавлено:
lavren
Ну не знаю. достаточно было кликнуть по ссылке download, как там надпись

Цитата:

This project is freeware and open source under modified BSD style license!

чуть ниже сказано, что можно свободно использовать и в коммерческих проэктах, но автор не отказался бы от вознаграждения.
Автор: delover
Дата сообщения: 27.05.2008 09:40
greenpc
Извинения приняты. )

Цитата:
В качестве совета - попробуйте напрямую из датасета получить данные, т.е. без всяких гридов и букмарков

Думаю так и придётся делать, но думаю что качественнее будет вычислимым полем, только в качестве заполнителя будет дубль ID, однако он успеет упасть в элементарный TList, а алигны у листа вполне сносные.


Цитата:
Вопрос только зачем? Что Вы хотите этим получить?

Мне нужно только быстрое переваривание мультиселекта в гриде. Ну нажал я Ctrl+A (selectAll), ну отменил с контролом две верхние записи, остальное вырезал и вставил другому parent_id. Точно знаю, что это может работать быстро.

Букмарки создаются DB-шным первичным борлановским датасетом и преспокойно могут тащить за собой ID, так как это восьмибайтная строка GridNoToRecNo. При фечоле сортировкой рулит сама гридина. Надо полагать, что для сортировкий ей необходимы все данные, так что накладки на отбор ID и привязывание их к букмарку нисколько не обременило бы проц с двумя гигами для двух тысяч записей. Я полагал что адекватные способы уже имеются...

OdesitVadim

Цитата:
А строку для клипбоарда небось делаем так
s := s + новаязапись ?

Раньше так обычно и делал, а в этот раз немного по другому:
s := IntToStr(Id); if L.IndexOf(s) < 0 then L.Add(s);
Спасибо, ты натолкнул на мысль, что IndexOf вообще-то лишний. ))))
Без него я не замечаю как 4500 айдишников улетают... Думаю и 50000 улетят так же.

Сории вопрос закрыт.




Автор: Aladdinych
Дата сообщения: 27.05.2008 13:05
Есть Toolbar помещенный на форму.
Когда я его помещаю на панель - режим dkDock и использую стандартный DockManager, Toolbar приобретает вид панели с заголовком из двух параллельных черточек и кнопки [X].
Я хочу чтобы:
1. Кномпки закрытия вообще не было.
2. Элемент для буксировки имел другой вид, отличный от стандартного.
3. Буксировать тоолба можно было за любое место.

Как этого добиться?
Нужно ли для этого писать свой dockmanager,
где найти его пример.
Автор: OdesitVadim
Дата сообщения: 27.05.2008 13:48
в библиотеке JVCL есть докменеджеры. Там есть подобные Visual Studia и другим продуктам. Попробуй.
Автор: f3ka
Дата сообщения: 27.05.2008 16:07
Товарищи, интересует вопрос про VssConneXion для Delphi 2007.
Кто-нибудь использует данный эксперт и если да, то использует ли при помощи патча, который можно найти у братьев китайцев или лицензию?
Просто есть проблемы именно с патчем, если его использовать то он вешает дельфю (через разное время), а если юзать триальную (оригинальную) DLL то все в норме. Может это только у меня такие проблемы?
Автор: OdesitVadim
Дата сообщения: 27.05.2008 17:10
f3ka
Во первых обсуждение "патчей" в соответствующей ветке, а не здесь.
во вторых - разрабочики часто вместо просто вывести сообщение "версия крякнута", делают "мелкие безобидные пакости".
Автор: RomanTim
Дата сообщения: 27.05.2008 18:52
f3ka
Ну неужели так тяжело посмотреть хотя бы на страницу назад, не говоря уже о поиске по версии для печати?
Автор: f3ka
Дата сообщения: 28.05.2008 09:46
RomanTim огромное спасибо, недоглядел. Уж сильно был расстроен, что не работает нормально VSS.
OdesitVadim а не подскажете ли где тема про патчи? Это типа та тема? Так там тоже не обсуждают... Там только раздают...
Автор: greenpc
Дата сообщения: 29.05.2008 06:34
delover
я еще раз подниму твой вопрос
а если сделать на стороне базы
update Table set parent_id=... where id not in (Id'шники не выделенных записей)
и быстро и красиво
а для полного выделения (SelectedRow=RecordCount)
update Table set parent_id=...
Автор: delover
Дата сообщения: 29.05.2008 08:56
greenpc
Жаль, так как эта мысль хорошая и красивая, но она "экстремальная" . На самом деле базы обычно сетевые, а не монопольные. ID-шники не взятые в расчёт могут появиться как раз в тот момент, когда мы собрались апдейтить всех "кого не знаем". Возможно мысль тут не полностью с блокировками, блокировки на разных базах реализуются по разному. Количество выбранных тоже может поменяться. Я например нажал Ctrl+A (датасет в транзакции), потом пошёл попить, захотел отлить, задержался по большому. Потом пришёл к экрану и долго не мог понять чего же я хотел. Потом вспомнил. К этому моменту все уже чего-то насоздавали. А я например даже и не думал, что запрос будет к базе из другой транзакции, не той которая у грида. Так что ID это ID, тут открывать нечего. RecNo - это тоже открывать нечего. А вот букмарки типа #0#0#0#1#0#0#0#2 могли бы выглядеть типа #0#0#0#1#0#0#0#2#0'ID'. Хотя когда я действительно убрал IndexOf по стринглисту 11 тысяч айдишников, всё стало так же как и в текстовом редакторе. Так что 50 тысяч записей из номенклатуры будут копироваться с небольшой задержкой, которая много меньше, чем при открытии датасета.

Добавлено:
зы:
Вообще может ли поменяться первое уникальное поле датасорца в транзакции так, чтобы сам датасорц об этом не догадывался?
Автор: OdesitVadim
Дата сообщения: 29.05.2008 10:09
delover
На то она транзакция, что бы быть транзакцией. Ничего не поменяется.
Автор: greenpc
Дата сообщения: 29.05.2008 10:25
OdesitVadim
delover

Цитата:
Вообще может ли поменяться первое уникальное поле датасорца в транзакции так, чтобы сам датасорц об этом не догадывался?

Может.
и датасорц об этом не узнает пока его не отрефрешишь.Хотя изменять уникальное поле - это "экстримально"
кстати а если удалить запись из БД, то букмарка об этой записи будет не валидна

Цитата:
Я например нажал Ctrl+A (датасет в транзакции),

запомнил max(id)
и при update where id<=твоего запомненого значения,
тогда всеравно скоко записей создано
ЗЫ: предлагаю закрыть вопрос, т.к. начинаем офтопить
Автор: delover
Дата сообщения: 29.05.2008 12:41
greenpc
Присоединяюсь к предложению, однако!

1. Искал рефреш у TDataSource = class(TComponent) (прошу не путать с датасетом), не нахожу. За то увидел свойство State: TDataSetState, догадываюсь для чего это свойство (одно только Browse моде чего стоит).

2. "Датасорц об этом не узнает", возможно, но только в других случаях:
a) Это поле вычислимое.
б) Это поле не Integer или не индексное.
в) Это поле добавленной записи ID которой формируется триггерным генератором, а у компонента может не стоять опция WhenGetGenID = wgOnNewRecord.

3. Букмарка будет валидна, так как она содержит связь сортировок DB контрола с текущими номерами записей датасета в текущей транзакции в текущем селекте. И создают эти букмарки именно датасеты, так что им и карты в руки. Странно, букмарка датасета не валидна, а ID записей у неё валидный. Да и для GotoBookmark учитывать ID не придётся.

4. max(id) при "for 1 to 8 delete" и "for 1 to 8 insert" бывает похожим. Однако если самому читать текущее значение генератора и учитывать его во where, то можно серьёзно снизить количество случайности, так как генераторы только увеличиваются и от ролбэков транзакций не зависят.

OdesitVadim
Я думаю так же, но в пункте 2 может быть я чего либо упустил.
Автор: greenpc
Дата сообщения: 29.05.2008 12:48
delover
сорри ошибся с датасетом
Автор: AndreyAgrh
Дата сообщения: 30.05.2008 08:57
Подскажите, пожалуйста, как обработать максимизацию дочернего окна, так чтобы оно разворачивалось не на весь экран, а как в Delphi 7, например, окно с кодом разворачивается.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


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