Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/86: Рейтинг темы: голосов - 86, средняя оценка - 4.69
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
1

Узнать номер колонки в DBGrid имея ее имя

19.07.2013, 22:16. Показов 16441. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, как можно узнать номер колонки в DBGrid имея ее имя ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2013, 22:16
Ответы с готовыми решениями:

Узнать имя процесса имея HWND
Возник такой вопрос: как можно узнать имя процесса, имея его HWND? Добавлено через 18 минут...

Узнать HWND главного окна процесса имея его имя?
Запускаем калькулятор Windows. Имя этого процесса (полученное с использованием PROCESSENTRY,...

Нужно узнать имя и путь исполняемого файла, имея handle его окна
Нужно узнать имя и путь исполняемого файла, имея handle его окна. Когда используешь handle...

Узнать номер выделенной колонки
Здравствуйте, интересует такой вопрос: как можно узнать номер выделенной колонки в табличном поле. ...

15
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
19.07.2013, 22:23 2
Цитата Сообщение от tdo22 Посмотреть сообщение
Привет, как можно узнать номер колонки в DBGrid имея ее имя ?
А что имеется в виду под "имя колонки"?
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
19.07.2013, 22:24 3
tdo22, к колонке обращаются либо по индексу, либо по имени - одно из двух.
Если же необходимо выяснить номер выделенной колонки, то
Delphi
1
DBGrid1.SelectedIndex;
в помощь.
1
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
20.07.2013, 01:03  [ТС] 4
Цитата Сообщение от northener Посмотреть сообщение
А что имеется в виду под "имя колонки"?
в DBGrid есть колонка, ее имя "Цена" мне нужно узнать ее порядковый номер

Добавлено через 1 минуту
Цитата Сообщение от droider Посмотреть сообщение
tdo22, к колонке обращаются либо по индексу, либо по имени - одно из двух.
Если же необходимо выяснить номер выделенной колонки, то
Delphi
1
DBGrid1.SelectedIndex;
в помощь.
если не ошибаюсь
Delphi
1
DBGrid1.SelectedIndex
указывает на выделенную колонку а мне нужно узнать ее порядковой номер имея только ее имя
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
20.07.2013, 01:12 5
Перебирай все элементы DbGrid.Columns в цикле, и ищи тот столбец, который нужен (по любому критерию, хоть по Title, хоть по имени поля). Нашел - запоминай индекс.
1
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
20.07.2013, 01:22  [ТС] 6
Цитата Сообщение от UI Посмотреть сообщение
Перебирай все элементы DbGrid.Columns в цикле, и ищи тот столбец, который нужен (по любому критерию, хоть по Title, хоть по имени поля). Нашел - запоминай индекс.
блин точно, спасибо!
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
20.07.2013, 01:47 7
Цитата Сообщение от tdo22 Посмотреть сообщение
в DBGrid есть колонка, ее имя "Цена" мне нужно узнать ее порядковый номер
У колонки в DBGrid нет имени. Имя есть у поля записи.
И нескромный вопрос. Зачем нужно знать порядковый номер(индекс) колонки DBGrid? (TDBGrid.Columns.Items[] которая)
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
20.07.2013, 01:56  [ТС] 8
Цитата Сообщение от northener Посмотреть сообщение
У колонки в DBGrid нет имени. Имя есть у поля записи.
И нескромный вопрос. Зачем нужно знать порядковый номер(индекс) колонки DBGrid? (TDBGrid.Columns.Items[] которая)
это для разных валют, то-есть имя поля будет меняться на имя выбраной пользователем валюты (USD, EUR ...)
и еще для пару вещей... но для этого нужно знать порядковый номер колонки с именем "Цена"
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
20.07.2013, 02:40 9
Цитата Сообщение от tdo22 Посмотреть сообщение
это для разных валют, то-есть имя поля будет меняться на имя выбраной пользователем валюты
Имя поля (TDBGrid.Columns[].FieldName) будет меняться или заголовок (TDBGrid.Columns[].Title.Caption)?
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
20.07.2013, 13:42  [ТС] 10
Цитата Сообщение от northener Посмотреть сообщение
Имя поля (TDBGrid.Columns[].FieldName) будет меняться или заголовок (TDBGrid.Columns[].Title.Caption)?
Delphi
1
TDBGrid.Columns[].Title.Caption
Добавлено через 8 минут
а можно обратится к колонке по имени а не по порядковому номеру ?
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
20.07.2013, 14:42 11
tdo22,
Delphi
1
 DBGrid1.DataSource.DataSet.FieldByName('имя_колонки').Value;
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
20.07.2013, 14:51  [ТС] 12
Цитата Сообщение от droider Посмотреть сообщение
tdo22,
Delphi
1
 DBGrid1.DataSource.DataSet.FieldByName('имя_колонки').Value;
Delphi
1
DBGrid1.DataSource.DataSet.FieldByName('Цена').Value;
выводит значение первой ячейки в поле "Цена", а как узнать порядковый номер ?
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
20.07.2013, 14:58 13
Цитата Сообщение от tdo22 Посмотреть сообщение
как узнать порядковый номер?
этого поля?
Если это поле у Вас в таблице, например, стоит на третьем месте, то Index=2, т.к.
нумерация полей начинается с нуля.
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
20.07.2013, 15:03  [ТС] 14
Цитата Сообщение от droider Посмотреть сообщение
этого поля?
Если это поле у Вас в таблице, например, стоит на третьем месте, то Index=2, т.к.
нумерация полей начинается с нуля.
У меня есть поле "Цена", как мне узнать его индекс имея только его имя ?
или возможно обратится к поле по имени ?
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
20.07.2013, 15:50 15
я уже написал как обратиться по имени
Delphi
1
DBGrid1.DataSource.DataSet.FieldByName('Цена').Value;
и как узнать индекс
Цитата Сообщение от tdo22 Посмотреть сообщение
Если это поле.... на третьем месте, то Index=2, т.к.
нумерация полей начинается с нуля
Добавлено через 41 секунду
Что еще тут непонятно?
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
21.07.2013, 01:26  [ТС] 16
Цитата Сообщение от droider Посмотреть сообщение
я уже написал как обратиться по имени
Delphi
1
DBGrid1.DataSource.DataSet.FieldByName('Цена').Value;
и как узнать индекс


Добавлено через 41 секунду
Что еще тут непонятно?
вот мой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TFournisseurs.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var Zn:Double;
    R:TRect;
    i: integer;
begin
 
   R:=Rect;
   InflateRect(R, -2, -2);
   if Column.Index=1 then
      begin
         Column.Title.Caption:=ComboBox2.Text;
         Zn:=DataM.ADOQuery1['Цена']*StrToFloatDef(Edit3.Text,0);
         DrawText(DBGrid1.Canvas.Handle, PChar(Format('%8.2n',[Zn])), -1, R, DT_RIGHT);
      end;
end;
там где 10 строка, в If нужно указать индекс столбца с именем "Цена"
если там написать так:
Delphi
1
2
3
...
if DBGrid1.DataSource.DataSet.FieldByName('Цена').Value then
...
тогда все столбцы будут иметь одно имя

Добавлено через 8 часов 53 минуты
решил:
Delphi
1
DBGrid1.DataSource.DataSet.FieldByName('Цена').Index;
0
21.07.2013, 01:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2013, 01:26
Помогаю со студенческими работами здесь

Как узнать букву колонки Excel, если у меня есть ее номер
Здравствуйте! Подскажите, как можно узнать букву колонки Excel, если у меня есть ее номер? Мне это...

Узнать номер выделенной по щелчку строки в DbGrid
Как узнать номер выделенной по щелчку строки в DbGrid ? В Delphi вроде нашел код void...

Tсть ли возможность узнать номер (индекс) СТРОКИ у заполненного DBGrid?
Подскажите есть ли возможность узнать номер (индекс) СТРОКИ у заполненного DBGrid?:wall:

Как узнать номер/имя строки/столбца в ассоциативном 2х массиве?
Есть ассоциативный массив след. вида: $array , , ... ]; Есть некая переменная $i, которая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru