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

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

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

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

maxxsnake

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Возник вопросик. Компонент TDBGridEh из пакета EhLib. Необходимо для DBGridEh.Columns[1].Title.Caption записать довольно длинную строку в несолько строк и чтобы она отображалась вертикально. С вертикальностью все понятно, а вот записать одну длинную строку несколькими короткими не могу. Запись в Caption строки вида '123'+#13+#10+'qwe' не помогает. Как это можно сделать ?
 

Всего записей: 36 | Зарегистр. 15-06-2005 | Отправлено: 17:06 01-12-2007
vladk1973



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
maxxsnake
 
По Ehlib есть отдельная тема [?] Я сам довольно плотно работал с Ehlib, но тут тебе ничем не могу помочь.  
Решение можно поискать в разборе исходников TDBGridEh

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 18:02 01-12-2007
ALPeresvet

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladk1973
Я сделал, как мне сказал RomanTim
 

Цитата:
Определи папку, в которой лежит библиотека и сформируй путь к хелпу:
var
  buf: array [0..1024] of Char;
begin
  GetModuleFileName(HInstance, @buf, SizeOf(buf));
  hlppath := ExtractFilePath(PChar(@buf)) + '\myhelp.hlp';

 
Или что то не так? Ну помогите кто - нибудь.
 
Добавлено:
PH:= String(Application.MessageBox('Каталог не указан','Внимание', MB_ICONSTOP));
Про MessageBox и PH ты это имел ввиду, или как?

Всего записей: 13 | Зарегистр. 29-11-2007 | Отправлено: 22:10 01-12-2007
vladk1973



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ALPeresvet
Проще надо быть, проще...
 

Код:
 
 var
  buf: array [0..1024] of Char;
  ph: string;
begin
  GetModuleFileName(HInstance, @buf, SizeOf(buf));
  ph := ExtractFilePath(buf) + 'myhelp.hlp';
  //ShowMessage(ph); <--  я вот про это говорил
  ShellExecute(Handle, 'open', PChar(ph), nil, nil, SW_RESTORE);
end;
 
 

Если бы ты показал строку PH сам себе, то сам бы увидел, в чем ошибка

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 04:31 02-12-2007 | Исправлено: vladk1973, 04:33 02-12-2007
ALPeresvet

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladk1973
Спасибо - работает, а то я себе всю голову пробил уже. Как раз к ронедельнику доделаю, а то только на этом и застрял. Ещё раз спасибо.

Всего записей: 13 | Зарегистр. 29-11-2007 | Отправлено: 10:10 02-12-2007
SergeBS



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

Цитата:
Может поподробнее разъяснишь нам, сирым, о параметризованных запросах?  

А что объяснять-то? Если есть два РАЗНЫХ запроса, то чтобы во 2-м активной стала текущая запись первого - юзаем locate. А если нужно просто получить текущую строку 1 запроса, то во 2-м нужно ЯВНО записать условие отбора, соответствующее этой строке (типа ключевое поле = текущее значение для 1 запроса). И никакие пляски вокруг индексов ничего не дадут, поскольку индекс задает лишь порядок следования записей при просмотре. Ну и сокращает время поиска. А строить такой индекс, чтобы первая строка в результате оказалась та, которая текущая в другом запросе - замаешься.

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 10:29 03-12-2007
vladk1973



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SergeBS
Мне кажется, что ты, милейший, невнимательно читаешь посты автора вопроса.
Разъясняю:
Имеем два грида.
На одном бегаем по строчкам, нажимаем кнопку и вылезает форма редактирования записи.
Судя по вопросу, в этой форме лежат только датаконтролы на первый датасет. Редактируем запись, все гуд.
 
На втором гриде бегаем по строчкам, нажимаем кнопку, вылезает форма редактирования но в контролах этой формы мы почему то видим не текущую строчку во втором гриде, а первую во втором датасете.
Разница между этими двумя случаями в том, что в первом - Table, во втором - Query
А все что ты написал
 

Цитата:
Сам-то понял, что написал? DBGrid - компонент для отображения и редактирования таблицы. Форму ты в него никак не запихнешь. А потому не майся ерундой. Либо подумай и напиши что ДЕЙСТВИТЕЛЬНО нужно, либо просто выкинь DBGrid2 и применяй другие компоненты.  

 

Цитата:
Если есть два РАЗНЫХ запроса, то чтобы во 2-м активной стала текущая запись первого - юзаем locate. А если нужно просто получить текущую строку 1 запроса, то во 2-м нужно ЯВНО записать условие отбора, соответствующее этой строке (типа ключевое поле = текущее значение для 1 запроса). И никакие пляски вокруг индексов ничего не дадут, поскольку индекс задает лишь порядок следования записей при просмотре. Ну и сокращает время поиска. А строить такой индекс, чтобы первая строка в результате оказалась та, которая текущая в другом запросе - замаешься.

 

Цитата:
Ну при чем тут индексы? Разные запросы могут встать на одну запись только если ее в одном из запросов специально выделять по признакам из 2-го запроса. Или использовать "в лоб" locate. Опять же по признакам 1 запроса искать в результатах 2-го.  

 
полный бред

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 11:47 03-12-2007
vserd

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

Цитата:
Если активна сетка DBGrid1 при нажатии на Button открывается форма редатирования выбранной строки.  
А если выбрана DBGrid2 при нажатии на Button открывается форма редатирования первой строки в базе данных.  
 
Вопрос  вот в чем, как сделать чтобы в DBGrid2 открывалась форма редатирования выбранной строки, а не первой строки в BD

Вообщето ошибка в ДНК. Т.е. Исходниках. А так как они отсутствуют, то дежурный экстрасенс подсказывает что ошибка в не правильном указании DataSet.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 12:36 03-12-2007
vladk1973



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

Цитата:
Вообщето ошибка в ДНК. Т.е. Исходниках.

Мне кажется, уважаемый adg208 давно уже "проблему" разрешил, только с нами не поделился...

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 12:50 03-12-2007
SergeBS



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

Цитата:
 Мне кажется, что ты, милейший, невнимательно читаешь посты автора вопроса.
Разъясняю:
Имеем два грида.  

Дальше пожрал проклятый суслик . Еще раз объясняю: у DBGrida активной строки - НЕТ! Он просто отражает активную (выбранную если угодно) строку у dataset-а другим цветом, индикатором и т.п. Можно конечно путем плясок с бубном и т.п. определить активную строку по DBGrid-у. Но не нужно. Нужно сразу брать данные dataset (неважно - Table, Query) и по ним искать что нужно. И потому смотреть на этот DBGrid - просто не нужно. Теперь, надеюсь, понятно изложил?  
Да и вообще автор изложил нечто смутное и неопределенное. Пример:

Цитата:
 в Delphi подключаюсь к базе ADOConnection, в DBGrid1 отображаю все строки таблицы. DBGrid1 соединен с базой через ADOTable и DataSource1.
 
В DBGrid2 вывожу даные запроса
select *
from Si
where PZ LIKE '''+Edit1.Text+'''
DBGrid1 соединен с базой через ADOQuery и DataSource2.  

Вопрос: DBGrid1 соединен через Datasource1 или Datasource2? А может через оба по очереди ?  
О том, что в обоих случаях применяется что попало, но не то, что нужно, можно вообще промолчать.
 
А ежели насчет неприменимости индексов - полный бред, так объясни тогда, как с помощью этих индексов будешь переходить в одном датасете на активную запись другого.  Или просто встанешь на активную запись самого датасета - без разницы. Это наверняка заинтересует широкую общественность .

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 13:49 03-12-2007
vladk1973



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

Цитата:
как с помощью этих индексов будешь переходить в одном датасете на активную запись другого

Гриды, и датасеты не взаимосвязаны между собой, это не master-detail связь
Индекс, а вернее речь шла о Primary key, как раз позволяет идентифицировать запись в Query.

Цитата:
DBGrid1 соединен с базой через ADOQuery и DataSource2.

Оченьвидно опечатка Ясно, что речь идеь о DBGrid2
 

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 13:56 03-12-2007
ShamaN



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Написал небольшую программу для небольшого преобразования БД FireBird. В ней построчно модифицируются все записи.
На слабеньком компьютере под WinXP SP2 Prof она работает намного быстрее, чем под на сервере под Win 2003 SP1, который намного более произвордительный (пробовал на 2-х разных серверах).
 
В чем причина тормозов на 2003 Win?

Всего записей: 1297 | Зарегистр. 23-09-2004 | Отправлено: 21:39 03-12-2007
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShamaN:
1. Смотри параметры транзакций (стоит ли AutoCommit и т.п.)
2. Сервера с HT-процессорами? Если да, то отключай.

----------
Чем больше узнаю людей, тем больше люблю компьютеры.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 06:32 04-12-2007
adg208

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как удалить выделенную в BDGrid строку (текущую строку) с помощью SQL-запроса?
А так же как в BDGrid создать пустую строку с помощью SQL-запроса?

Всего записей: 159 | Зарегистр. 26-12-2003 | Отправлено: 08:12 04-12-2007 | Исправлено: adg208, 11:53 04-12-2007
greenpc

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

Цитата:
Подскажите как удалить выделенную в BDGrid  

sql.text :='delete from <таблица> where <id>='+ inttostr(<id текущего значения поля>

Цитата:
А так же как в BDGrid (DBGrid) создать пустую строку  

никак, т.к. DBGrid это только компонента отображения БД
т.е. надо создавать "пустую" запись в БД
'insert into .....'
 
ЗЫ: а вобще-то RTFM
типа грубер понимание sql, работа с БД в дельфи

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 12:20 04-12-2007 | Исправлено: greenpc, 12:39 04-12-2007
adg208

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

Цитата:
greenpc


Цитата:
никак, т.к. DBGrid это только компонента отображения БД

 
Это понятно, не правильно написал.
Подробнее:
На форме есть DBGrid и кнопка, DBGrid устественно подключен к базе. Есть ADOQuery
который в котором запрос
      DataModule2.QuerySi.Active:=false;
      DataModule2.QuerySi.SQL.Clear;
      DataModule2.QuerySi.SQL.Add('select *');
      DataModule2.QuerySi.SQL.Add('from si');
      DataModule2.QuerySi.Active:=true;
DBGrid отображает все данные таблицы
При нажатии на кнопку открывается другая форма Form в которой идет заполнение полей таблицы.
Так вот при нажатии на эту кнопку открывается форма Form и строки редактирования не пустые, а с данными из первой строки базы.
 А нужно чтобы в базе данных создалась новая строка и на форме Form строки редактирования были пустые.

Всего записей: 159 | Зарегистр. 26-12-2003 | Отправлено: 12:48 04-12-2007
dominiksus



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
люди, как вставить в twebbrowser(в режиме редактир.) специальные символы, такие как:
&#8592; (тут стрелка влево)
©
®
 
и др. чтобы они потом в html выглядели как нужно?

Всего записей: 119 | Зарегистр. 11-08-2007 | Отправлено: 12:51 04-12-2007 | Исправлено: dominiksus, 12:53 04-12-2007
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
adg208
1.insert в базу
2. locate max(...)
3. Открывашь свою форму

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 12:54 04-12-2007
adg208

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

Цитата:
1.insert в базу  
2. locate max(...)  
3. Открывашь свою форму

Напиши пожалуйста по подробнее?
 

Всего записей: 159 | Зарегистр. 26-12-2003 | Отправлено: 12:57 04-12-2007
greenpc

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

Цитата:
Напиши пожалуйста по подробнее

не могу, не телепат
1.нужно знать стуктуру БД
2.
Цитата:
открывается форма Form и строки редактирования не пустые, а с данными из первой строки базы

а почему из первой? явно ошибка.
3. как обычно - код в студию
4. еще раз - читать RTFM (желательно с этого и начать)

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 13:24 04-12-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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru