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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

   

31416

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите - есть ли в Delphi возможность задавать статические методы (типа как в Java)
 
к примеру:
myclass = class
 
 function static_method():boolean;
 
 private
 
 public
 
end.
 
а потом чтобы в коде можно было вызывать без привязки к объекту: -  
myclass.static_method();
 
такой код работать не хочет - подскажите есть ли в дельфи подобное или альтернативы?
 
и еще интерсно есть ли возможность задать константу - тоже связанную с конкретным классом - т.е аналог
(public static final в Java)

Всего записей: 172 | Зарегистр. 19-07-2005 | Отправлено: 08:06 12-04-2007
Saxonika



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

Цитата:
 
type
  TMyClass = class (TObject)
    class function MyValue:integer; virtual; abstract;
  end;
 
  TOurClass = class (TMyClass)
    class function MyValue:integer; override;
  end;
 
  TYourClass = class of TMyClass;
 
 
  class function TOurClass.MyValue:integer;
  begin
   result := 5;
  end;
 
procedure TForm1.Button1Click(Sender: TObject);
var C:TYourClass;
begin
  ShowMessage (inttostr(TMyClass.MyValue));  // Wow! Error
  ShowMessage (inttostr(TOurClass.MyValue)); // Wow! 5
 
  C := TOurClass;
  ShowMessage (inttostr(C.MyValue));  // Wow! 5
 
end;
 

Всего записей: 345 | Зарегистр. 26-04-2006 | Отправлено: 09:50 12-04-2007
GreatOne



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Какая функция в дельфи разворачивает форму на весь экран?

Всего записей: 85 | Зарегистр. 15-03-2007 | Отправлено: 11:50 12-04-2007
Z MeZe



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

Цитата:
Какая функция в дельфи разворачивает форму на весь экран?

Это в properties: WindowState := wsMaximized;
 

Всего записей: 455 | Зарегистр. 09-02-2004 | Отправлено: 12:00 12-04-2007
GreatOne



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

Цитата:
Это в properties: WindowState := wsMaximized;  

 
Спасибо!

Всего записей: 85 | Зарегистр. 15-03-2007 | Отправлено: 12:04 12-04-2007
zeroandruxa



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Работаю с Firebird Embedded какие спмые простые компоненты можно использавать? Мне нужно только процедуры запускать.

Всего записей: 538 | Зарегистр. 02-11-2005 | Отправлено: 13:58 12-04-2007
killerbeanjeka

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zeroandruxa
есть стандартные IBExpress, но ИМХО лучше FIBPlus использовать

Всего записей: 86 | Зарегистр. 27-09-2006 | Отправлено: 14:06 12-04-2007
RedPromo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
31416
Вот пример насчет Static
 

Цитата:
 
  TFigure = Class
  strict private
    class var mCount: integer;
  public
    class function Draw():boolean; static;
  End;
 
  TRectangle = Class(TFigure)
  public
    /////
  End;
 
class function TFigure.Draw: boolean;
begin
  mCount:= mCount + 1;
  MessageDlg('Draw Figure'+IntToStr(mCount), mtWarning, [mbOK], 0);
end;
 
Var mClas : Trectangle;
    mClas2: TRectangle;
begin
  mClas2:=Trectangle.Create;
  mClas:=Trectangle.Create;
 
  mClas2.Draw;  //Здесь будет mCount = 1
  mClas.Draw; //Здесь будет mCount = 2
 
  mClas.Free;
  mClas2.Free;
 


Всего записей: 559 | Зарегистр. 05-04-2006 | Отправлено: 17:26 12-04-2007
GreatOne



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как подключиться к БД Access у которой есть файл рабочей группы? Вхожу под админской учеткой - пишет что "БД отсутсвует или открыта с монопольным доступом другим юзером". Как настроить соединение кто может подсказать?

Всего записей: 85 | Зарегистр. 15-03-2007 | Отправлено: 17:46 12-04-2007
RedPromo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GreatOne
У тебя выставлено свойство. Нужно в нем
Jet OLEDB:System database прописать твой файл рабочей группы.
 

Всего записей: 559 | Зарегистр. 05-04-2006 | Отправлено: 22:19 12-04-2007
ERO1

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


Цитата:
Запись можно сделать так:  
1. Запускаете транзакцию  
2. Вносите информацию в главную таблицу  
3. Получаете значение первичного ключа строки внесенной в п.2  
4. Вносите данные в подчиненную таблицу используя значение, полученное в п.3.  
5. Подтверждаете транзакцию  
 
Для работы с Firebird, а так же InterBase, удобно использовать компоненты FIBPlus (http://devrace.com). На сайте разработчика есть разные статьи, например "FIBPlus: Особенности механизма master-detail при работе с InterBase и Firebird".  
И есть хорошая книга "Мир InterBase", в сети видел электронную версию.


Цитата:
 
1. При вставке записи в основную таблицу получаем ID записи.  
2. Начинаем транзакцию  
3. Вставляем запись в основную таблицу.  
4. Для каждой записи из подчинной таблице нужно использовать как часть ключа ID из п1.  
5. Фиксация или откат транзакции.  
 
Как это все проектировать читайте либо книжку по проектированию БД, книжку по IB которые указал gpi, либо PDF от 6-й версии (totorial, Data definition да и другие тоже).  В свое время я по ним учился (только тогда 4.х) был.  
 

 
Сделал все как вы посоветовали н мне прога выдает ошибку.
 
 
Добавлено:
Не успел добавить.
создал таблицу  ну основную и там конечно есть ID поля автоинкременант он создается через генератор и другие поля штук 6. А потом создал подчененую таблицу с полями ID, MAIN_ID и ещё полей 7 штук. Здесь MAIN_ID для связи с осн.таблицой на первой таблицы создал первычный ключ к полю ID на втором  создал первычный ключ к полю ID и внещний ключ MAIN_ID (ID->MAIN_ID).
Открыл Дельфи в дата модуле положил Датабейс, транзакцию и два датасета (естественно для интербейса). В первом датасете в SelectSQL написал
select * from MAIN
генератор поля устоновил
ну апдейт поля сделал.
На втором датасете в SelectSQL написал
select * from KONTROL
where main_id=:id
генератор поля устоновил
ну апдейт поля сделал.
в onNEWRECORDE написал qrKontrol['main_id']:=qrMain['id'];
в датасорсе установил датасорс первого Датасета. Потом сделал астивным все элементы.
Делаю компеляцию проги все без ощибки.
В форме есть дбгрид у него там датасоре написан датасорс первого датасета. В гриде все показывает нормално, но когда делаю бравз грида то тогда вылитает это ошибка.
"Access violation at address 00000000. Read of address 00000000"
Что это означает?

Всего записей: 67 | Зарегистр. 18-01-2006 | Отправлено: 09:40 13-04-2007
vserd

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

Цитата:
создал таблицу  ну основную и там конечно есть ID поля автоинкременант он создается через генератор и другие поля штук 6.

Как заполняешь значение этого автоинкременант? В тригере или ручками?
 
Я делал так.
1.  В DM создана процедурина которая получает значение от генератора.
2. В Master после INSERT заполняю значние генератора.
FieldByName('ID').asInteger := DM.GetNextOID;
В Detail так как у тебя.
 
 

Цитата:
Access violation at address 00000000. Read of address 00000000"  

гдето есть NIL указатель. Трасируй.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 10:44 13-04-2007
GreatOne



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

Цитата:
GreatOne
У тебя выставлено свойство. Нужно в нем
Jet OLEDB:System database прописать твой файл рабочей группы.  

 
Спасибо!

Всего записей: 85 | Зарегистр. 15-03-2007 | Отправлено: 11:26 13-04-2007
killerbeanjeka

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня есть таблица следующего вида
-------------------------
-  Дата  -  Статус  -
-------------------------
 
как можно в зависимости от значения "статуса" (1,2,3...) закрашивать ячейку "Дата" в определённый цвет? Работаю с TcxGrid

Всего записей: 86 | Зарегистр. 27-09-2006 | Отправлено: 11:41 13-04-2007
GreatOne



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как можно в DBGrid занести значение типа гиперссылка программно?
 
Добавлено:
Народ подскажите плиз как узнать количество строк в DBGrid?

Всего записей: 85 | Зарегистр. 15-03-2007 | Отправлено: 11:47 13-04-2007 | Исправлено: GreatOne, 11:50 13-04-2007
OdesitVadim



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

Цитата:
Народ подскажите плиз как узнать количество строк в DBGrid?

DBGrid это только средство отображения данных. Кол-во строк в нём равно кол-ву строк запроса. Тоесть нужно смотреть на того, кто даёт данные. если это Table, тогда Table1.RecordCount (кажеться так)

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 13:29 13-04-2007
RedPromo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
killerbeanjeka
Навесить на колонку Дата свойство CustomDrawCell
Вот примерный текст процедуры отрисовки

Цитата:
 
Var st: integer;
begin
  if VarIsNull(Sender.DataController.GetValue(AViewInfo.GridRecord.Index, Индекс колонки Статус))=False then
    st:= Sender.DataController.GetValue(AViewInfo.GridRecord.Index,Индекс колонки Статус);
 
  ACanvas.Canvas.Brush.Style := bsSolid;
  if st=1 then
    ACanvas.Canvas.Brush.Color := $00F7EAD9
  else
    ACanvas.Canvas.Brush.Color := $0000E0D9;
 
  ACanvas.Canvas.FillRect(AViewInfo.Bounds);
  ADone:= True;
 


Всего записей: 559 | Зарегистр. 05-04-2006 | Отправлено: 13:37 13-04-2007 | Исправлено: RedPromo, 13:42 13-04-2007
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
killerbeanjeka
с TcxGrid не работал, то в стандартном гриде что-то типа:
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if Column.Field.FieldName='Dat' then
    if Table1.FieldByName('Status').AsInteger=1 then
      DBGrid1.Canvas.Brush.Color:=clRed
    else
      DBGrid1.Canvas.Brush.Color:=DBGrid1.Color;
 
  DBGrid1.DefaultDrawColumnCell(Rect,Datacol,Column,State);
end;

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 13:45 13-04-2007
GreatOne



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2OdesitVadim
 
Спасибо!
 
 
Добавлено:
Как можно отобразить гиперссылку или поле Memo в DBGrid, DBEdit?

Всего записей: 85 | Зарегистр. 15-03-2007 | Отправлено: 13:53 13-04-2007
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GreatOne
поле Memo отображай не в DBEdit а в DBMemo. а насчет "отобразить гиперссылку" вопрос не очень понятен. Если тебе нужно чтоб при нажимании на DBEdit запускался URL сделай что-то типа:
 
ShellExecute(0, Nil, Pchar('http:\\forum.ru-board.com'), Nil, Nil, SW_NORMAL);

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 12:10 16-04-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