Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2010, 18:02   #1
smaw1989
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 13
По умолчанию Как передать значение из DBText в edit?

Собственно сабж. Нужно чтобы в edit автоматом подставлялось текущее значение из DBText, подскажите пожалуйста, каким образом это сделать.
smaw1989 вне форума Ответить с цитированием
Старый 24.12.2010, 18:15   #2
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

чёза тупая тема?
Код:
procedure TForm1.DBEdit1Change(Sender: TObject);
begin
Edit1.text:=DBEdit1.text;
end;
dosha вне форума Ответить с цитированием
Старый 24.12.2010, 18:35   #3
smaw1989
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 13
По умолчанию

dosha уж какая есть :D Нужно не из DBEdit'a, а из DBText'а.
smaw1989 вне форума Ответить с цитированием
Старый 24.12.2010, 19:14   #4
Dimasw
Пользователь
 
Регистрация: 12.09.2010
Сообщений: 69
По умолчанию

DBText отображает данные из подключенной к нему таблицы через DataSource, DBText'у пофиг на отображаемое содержимое, он даже не знает что вообще написано, поэтому данные брать надо из подключенной к нему таблицы (TTable, TQuery или др..).
А чтобы автоматом подставлялось, надо в событии AfterScroll этой таблицы написать что-то вроде:
Код:
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
Edit1.text:=Table1.fieldbyname('MyField').asstring;
end;
SELECT BEST FROM LIFE

Последний раз редактировалось Dimasw; 24.12.2010 в 19:19.
Dimasw вне форума Ответить с цитированием
Старый 24.12.2010, 20:07   #5
smaw1989
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 13
По умолчанию

Dimasw
Спасибо за ответ! А как событие AfterScroll поймет где находится Edit1? У меня DBText и Edit расположены на одной форме, а таблица из которой DBText берет данные находится в датамодуле.
smaw1989 вне форума Ответить с цитированием
Старый 24.12.2010, 20:32   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты пиши полный путь
Код:
Edit1.text:=DataModule1.Table1.fieldbyname('MyField').asstring;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2010, 20:43   #7
smaw1989
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 13
По умолчанию

Stilet
Так если пишем в обработчике события DBText'а, то надо указывать полный путь местонахождения Edit'a, нет?
smaw1989 вне форума Ответить с цитированием
Старый 24.12.2010, 20:54   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то надо указывать полный путь местонахождения Edit'a, нет?
Можно если нужно. Но никак не обязательно
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2010, 20:57   #9
smaw1989
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 13
По умолчанию

Stilet
Это я к тому, что если прописать
Код:
Edit1.text:=DataModule1.Table1.fieldbyname('MyField').asstring;
то делфи пишет что Edit1 не определен, он ведь находится не в датамодуле, а вообще на другой форме. Как тут выкрутиться?
smaw1989 вне форума Ответить с цитированием
Старый 25.12.2010, 00:24   #10
Dimasw
Пользователь
 
Регистрация: 12.09.2010
Сообщений: 69
По умолчанию

Есть два выхода:
1.Датамодуль должен видеть ту форму, где лежит Edit1, для этого в датамодуле после implementation пишем
Код:
uses Unit2; // модуль где описан класс формы с нужным Edit1
Теперь в Датамодуле мы можем обращаться к Edit1
Код:
procedure TDataModule2.Table1AfterScroll(DataSet: TDataSet);
begin
Form1.Edit1.Text:=DataSet.fieldbyname('Name').asstring;
end;
2. Если все-таки есть причины, по которым мы не хотим, чтобы Датамодуль мог обращаться к другой Форме (в нашем случае к той, на которой лежит Edit1), то мы можем "подцепить" нужную процедуру к событию AfterScroll компонента Table1 (который лежит в Датамодуле) из модуля Формы. Для этого:
2.1. В модуле формы в разделе Uses добавляем модуль DB
Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls,ExtCtrls,DB;
2.2. Ручками пишем процедуру для класса Формы, которая будет потом обрабатывать событие AfterScroll
2.3.И ключевой момент: Подцепляем эту процедуру к событию AfterScroll таблицы, которая лежит в ДатаМодуле, обращаясь к ней через компонент DBText.
2.3. Само подцепление совершаем сразу, как форма нарисовалась, т.е. в событии FormShow.

Вот что примерно должно получиться:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls,DB, ExtCtrls;

type
  TForm1 = class(TForm)
    DBText1: TDBText;
    Edit1: TEdit;
    Button1: TButton;
    DBNavigator1: TDBNavigator;
    procedure Table1AfterScroll(DataSet: TDataSet);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
Edit1.text:=DataSet.fieldbyname('Name').asstring; //событие перемещения по базе, которое подцепляем
end;

procedure TForm1.FormShow(Sender: TObject);
begin
DBText1.DataSource.DataSet.AfterScroll:=Table1AfterScroll; // собственно подцепление
end;

end.
SELECT BEST FROM LIFE

Последний раз редактировалось Dimasw; 25.12.2010 в 00:32.
Dimasw вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как передать значение ячейки в другую книгу? ShamanK Microsoft Office Excel 9 21.02.2017 01:52
Как передать фокус ввода в поле Edit Arassir Помощь студентам 14 11.07.2012 12:37
Как передать значение пременной из одной функции в другую? mr.-parker Общие вопросы C/C++ 2 27.03.2010 15:01
Как передать значение переменной из функции в ACCESSе в функцию в EXCELе? musicitsme Microsoft Office Access 1 01.04.2009 10:24
Как сохранить значение Edit после закрытия tarakan1983 Помощь студентам 14 11.09.2008 08:25