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

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

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

ShIvADeSt (20-04-2006 01:53): http://forum.ru-board.com/topic.cgi?forum=33&topic=6679#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102

   

chaugi



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A_V
Помогло-спасибо.

Всего записей: 321 | Зарегистр. 16-03-2002 | Отправлено: 14:06 06-12-2005
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь занимался динамическим созданием TAction с занесением в ActionManager? Нужно сделать Action для каждого файла в папке, чтобы пользователь мог добавить его в Toolbar. Сделал через ActionManager.AddAction, но он требует какой-то ActionClient, а для чего он нужен из хелпа не понятно. Удалось добавить Action'ы в Toolbar, но нужно чтобы они просто были в списке.

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 15:31 07-12-2005
Pinocchio

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

Цитата:
Inserts a new action into an existing actionband.
 
Delphi syntax:
function
AddAction(AnAction: TCustomAction; AClient: TActionClient; After: Boolean = True): TActionClientItem;
 
Description
AddAction adds an action to an action band. Use this method to insert a new action into an existing actionband. Use FindItemByCaption and FindItemByAction methods to locate the position at which you want to insert the new item.

Ты даёшь акцию а получаешь клиента, а что не понятно?  
Вместо After можно not Before. Непомню. Подробности можно в личку.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 16:06 07-12-2005 | Исправлено: Pinocchio, 18:48 07-12-2005
Farkhad



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется главная форма с меню.
При клике по пункту меню в этой форме должен загружаться какой-то фрейм, н-р, Frame2.
 
Как это реализовать?
 
Т.е. загружается главная форма, отображается некий стартовый фрейм (Frame1).
По клику на пункт Проекты/Статистика, загружается фрейм Frame2. При клике на Управлени пользователями/Новый пользователь загружается фрейм Frame3...

Всего записей: 731 | Зарегистр. 03-08-2001 | Отправлено: 17:59 07-12-2005
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pinocchio

Цитата:
 AClient: TActionClient

Сюда что передавать?

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 19:06 07-12-2005
A_V

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Farkhad
а в чем проблема?
 
var Frame :TFrame;
...
Frame:=TFrame2.Create(Self);
Frame.Parent:=Form1;  
...
if Assigned(Frame) then Frame.Free;

Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 22:07 07-12-2005
DimonXP

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У кого нибудь встречался такой трабл:  
При попытке создать проект - Cannot locate project options for personality

Всего записей: 325 | Зарегистр. 23-10-2003 | Отправлено: 09:06 08-12-2005
Farkhad



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A_V
Не понимаю я.
Даже то, что ты написал

Всего записей: 731 | Зарегистр. 03-08-2001 | Отправлено: 14:37 08-12-2005
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
evle
Специално для Вас спустился вниз, там обнаружил папку
[Delphi]\Demos\ActionBands\DynaActionBands.
 
Каталог Demos источник массы полезной информации.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 14:40 08-12-2005
vserd

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

Цитата:
var Frame :TFrame;  
...  
Frame:=TFrame2.Create(Self);  
Frame.Parent:=Form1;  
...  
if Assigned(Frame) then Frame.Free;
Не понимаю я.  

Чего тут не понятно?
var Frame  объявление переменной
Frame:=TFrame2.Create(Self); создание объекта
Frame.Parent:=Form1;  На каком контроле будет отображаться фрейм.
 
правильный код такой
if Assigned(Frame) then begin Frame.Free; Frame:= nil; end;
или такой  
if Assigned(Frame) then FreeAndNil(Frame);
Если фрейм был действительно создан, тогда уничтожаем его.
 
Если это не понятно в принцыпе, тогда читайте книжки по ООП. Тотже Delph Help.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 13:42 09-12-2005
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Farkhad
Тогда лучше объясни зачем тебе фрейм в статистике или где там, и как ты его  
загружать собрался? Какими операторами, функциями или методами (чтобы
понять нужны названия)?
 
Добавлено:
evle
Чем дело закончилось?

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 15:17 09-12-2005
Farkhad



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vserd
Т.е. последовательность этих действий надо выполнять для каждого пункта меню (нажатие на пункт)?
 
Н-р,
Users->New
Frame := TFrame2.Create(Self); // TFrame2 фрейм где создается новый юзер
....
 
 
User->Show all
Frame := TFrame10.Create(Self); // TFrame10 фрейм где отображаются все юзеры.

Всего записей: 731 | Зарегистр. 03-08-2001 | Отправлено: 19:06 09-12-2005
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Farkhad
Все зависит от....
Если у тебя одновременно показывается только один фрейм, тогда  
нужно будет if assigned(Frame) then FreeandNil(Frame); делать при каждом вызове.
например:
User->Show all  
if assigned(Frame) then FreeandNil(Frame);
Frame := TFrame10.Create(Self);
....
 
Users->New  
if assigned(Frame) then FreeandNil(Frame);
Frame := TFrame2.Create(Self); // TFrame2 фрейм где создается новый юзер  
....  
 
 
Если же на экране может быть одновременно несколько фреймов (MDI?). тогда нужно будет отслеживать какой фрейм будет закрываться пользователем, и хранить указатель на него в отдельной структуре (массив, список и т.п.) и удалять/добавлять его по мере надобности, либо уничтожаться в самом фрейме (делать Self.free), но это не очень хорошо с точки зрения "правильности".
 

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 18:49 10-12-2005
Farkhad



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

Цитата:
Если у тебя одновременно показывается только один фрейм

да именно так, спасибо!

Всего записей: 731 | Зарегистр. 03-08-2001 | Отправлено: 13:49 11-12-2005
Bill_PHO

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Удается ли кому-нибудь, используя ADOQuery в Delphi7, вытащить в грид больше, чем 4 знака после запятой из колонки типа numeric(18,6) (таблица расположена на MS SQL Server 2000) ?

Всего записей: 287 | Зарегистр. 15-08-2003 | Отправлено: 13:38 12-12-2005 | Исправлено: Bill_PHO, 13:38 12-12-2005
ShIvADeSt



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

Цитата:
Удается ли кому-нибудь, используя ADOQuery в Delphi7, вытащить в грид больше, чем 4 знака после запятой из колонки типа numeric(18,6) (таблица расположена на MS SQL Server 2000) ?

Попробуй обычный Query вроде я полностью все знаки вытаскивал, причем спокойно. Приходилось потом резать.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:48 13-12-2005
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bill_PHO
В ADOQuery идешь в FieldsEditor, выбираешь поле и выставляешь в его свойствах нужный формат отображения. Хоть 10 знаков после точки. Там же и маска ввода.

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 10:45 13-12-2005
Bill_PHO

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergeBS
 
А ты сам это попробовал - или это как бы теоретически?
Практически я сам конечно же это пробовал - ничего не получилось.
Не получается именно через ADO соединение + ADOQuery (через TDatabase+обычный Query - получается).
 
В Delphi2005/Delphi2006 - это срабатывает, хотя и криво. Ведь речь идет о точном формате числа с каким-то количеством знаков после запятой. А в свойствах Tfields ADOQuery, получается вытащить все знаки (в Delphi2005/2006), если задать тип поля float, а ведь это неточное представление числа, имеющего знаки после запятой. Т.е. хотелось бы вытаскивать точное значение.  
 
Добавлено:
ShIvADeSt
 
Как же я могу взять данные через обычный Query, если у него нет свойства ADOConnection?  
Я так и писал, что через ODBC соединение (через TDatabase+обычный Query) все нормально вытаскивается, а вот через TADOConnection+TADOQuery - нет.
 
Вообще во всех редакциях Delphi имеется странность в работе с точными числами.
Например, если вы посмотрите отладчиком, как выполняются действия с числами типа Currency, то увидите, что выполняются они на сопроцессоре, то есть преобразуются в плавающий формат и обратно. Может кто может объяснить философию такого поведения. При этом на разных компьютерах можно получить разный результат по причине работы сопросессоров в разных режимах (а это может зависить от наставленного софта. Некоторые программы принудительно переводят сопроцессор в нужный им режим ).
 
Добавлено:
SergeBS
 
Используя формат, получишь указанное число знаков после запятой, но значащих из них будет только 4, остальные нули.

Всего записей: 287 | Зарегистр. 15-08-2003 | Отправлено: 11:23 13-12-2005 | Исправлено: Bill_PHO, 16:56 13-12-2005
Bill_PHO

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergeBS
ShIvADeSt
 
Спасибо за участие.
Сработало, хотя это и криво, использование свойства ADOQuery - EnableBCD.
 
 

Всего записей: 287 | Зарегистр. 15-08-2003 | Отправлено: 13:25 14-12-2005
Admin CSB

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

Цитата:
Например, если вы посмотрите отладчиком, как выполняются действия с числами типа Currency, то увидите, что выполняются они на сопроцессоре, то есть преобразуются в плавающий формат и обратно.

Если я не ошибаюсь карренси, это по определению вещественное число...
Обычно его обзывают "числовой с фиксированной точкой"

Всего записей: 505 | Зарегистр. 23-01-2005 | Отправлено: 14:53 14-12-2005
   

Страницы: 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 102

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi
ShIvADeSt (20-04-2006 01:53): http://forum.ru-board.com/topic.cgi?forum=33&topic=6679#1


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru