Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi: Edit типа cbsEllipsis 
V
    Опции темы
Solominka
Дата 22.4.2011, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



В общем последний на сегодня вопрос.
У DBGrid-a есть возможность делать ячейку с кнопкой выбора (достигается путём изменения свойства ButtonStyle=cbsEllipsis). При нажатии этой кнопки открывается таблица ПОЛНОСТЬЮ, выбирается вариант и нажимается кнопка ОК.

Так вот, меня интересует вопрос: можно ли в каком-нибудь обычном текстовом поле типа Edit сделать такую же кнопочку с тремя точками?

Можно было бы конечно воспользоваться обычным комбобоксом, но ведь вся таблица значительно удобнее. 
PM MAIL   Вверх
Novichek27
Дата 22.4.2011, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 24.4.2010

Репутация: 1
Всего: 1



скачай компоненты JVCL, Alpha Controls, там всякого много.
PM   Вверх
Solominka
Дата 22.4.2011, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



Цитата

скачай компоненты JVCL, Alpha Controls, там всякого много. 


Аааа... Ээээ... Где их можно скачать и как их устанавливать?
Я просто никогда не сталкивалась с этим.

И неуж-то стандартными нельзя никак обойтись? 
PM MAIL   Вверх
Novichek27
Дата 23.4.2011, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 24.4.2010

Репутация: 1
Всего: 1



Цитата

И неуж-то стандартными нельзя никак обойтись?  


в стандартной палитре D7 например нету, а вдругих не знаю даже.

создать если только своими силами.

Цитата

Аааа... Ээээ... Где их можно скачать и как их устанавливать?


не помню, мож погуглить, найдешь 
PM   Вверх
Solominka
Дата 23.4.2011, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



Эммм, вот, подсказали мне значит выход из положения: использовать TSpeedButton.
Но у меня не выходит переделать код из ДБГрида в простой ДБЭдит:

Код

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  EditField:string;
begin
  EditField := DBEdit1.Text[DBEdit1.SelText].FieldName;
  if SameText(EditField, 'Темп. наружного воздуха') then begin
    if Form2.ShowModal <> mrOk then
      exit;
    Form1.DBEdit1.EditText;
    Form1.DBEdit1.Field.AsString := Form2.Query1.FieldByName('Темп. наружного воздуха').AsString;
  end;
end;


Жалуется на эту строчку:
Код

  EditField := DBEdit1.Text[DBEdit1.SelText].FieldName;


Пишет ошибку: Incompatible types: 'Integer' and 'String' 

Как быть?
PM MAIL   Вверх
Vas
Дата 23.4.2011, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



У DBEdit нет списка полей, он связывается с одним полем набора данных
Код

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
    if Form2.ShowModal=mrOk then
      begin
         Form1.DBEdit1.EditText; //это зачем?
         Form1.DBEdit1.Field.AsString:= Form2.Query1.FieldByName('Темп. наружного воздуха').AsString; //так вставляем данные сразу в БД
         Form1.DBEdit1.Text:= Form2.Query1.FieldByName('Темп. наружного воздуха').AsString; //так вставляем данные в дбедит без передачи в бд
       end;
end;

Вообще такой подход не правильный. 
Если значение поля может быть выбрано из другой таблицы, то обычно вставляют ID записи, и используют Lookup компоненты. 

Про нормальные формы слышали?


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Solominka
Дата 23.4.2011, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



Вообще мне подходит вот эта строчка по идее:

Код

Form1.DBEdit1.Field.AsString:= Form2.Query1.FieldByName('Темп. наружного воздуха').AsString; //так вставляем данные сразу в БД


Но когда я комментирую первую и третью строчки и оставляю только эту, то пишет ошибку: Query1: Dataset not in edit or insert mode. Что это значит?

Цитата

Вообще такой подход не правильный. 
Если значение поля может быть выбрано из другой таблицы, то обычно вставляют ID записи, и используют Lookup компоненты. 


Просто нужно, чтобы открывалась вся таблица и значение выбиралось в зависимости от каких-то условий: к примеру, код какого-то прибора выбирается в зависимости от его типа.
В самой таблиц это реализовано при помощи типа поля cbsEllipsis... А содержимое всех полей таблицы соответственно связано с эдитами. Так вот, мне нужно чтобы можно было редактировать записи одинаково и там и там. Я понимаю, что тот же Комбобокс проще в реализации, но мне надо чтобы было одинаково.
PM MAIL   Вверх
Vas
Дата 23.4.2011, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Цитата(Solominka @  23.4.2011,  16:04 Найти цитируемый пост)
Но когда я комментирую первую и третью строчки и оставляю только эту, то пишет ошибку: Query1: Dataset not in edit or insert mode. Что это значит?

Набор данных должен быть в режиме редактирования или добавления записей.
Я не знаю как сделано у вас, по логике вещей, в эдитах надо просто редактировать записи, а сохранять по отдельной кнопке, тогда достаточно должно следующего кода.
Код

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
    if Form2.ShowModal=mrOk then
         Form1.DBEdit1.Text:= Form2.Query1.FieldByName('Темп. наружного воздуха').AsString; //так вставляем данные в дбедит без передачи в бд
end;



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Solominka
Дата 23.4.2011, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



Vas, у меня есть к ДБГриду ДБНавигатор, в котором изменения сохраняются по нажатию кнопки-галочки. Но когда я пытаюсь изменить значение с кнопкой через эдит - галочка эта не активна, т.е. изменения не сохраняются... :(
PM MAIL   Вверх
Solominka
Дата 23.4.2011, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



А, всё я разобралась! Просто надо было добавить строчку:

Код

Form1.Query1.Edit;


И всё заработало!

Всех благодарю за помощь!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.