Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
19 Апрель 2024, 15:41:49
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Delphi как много в этом слове...

Страниц  : 1 2 3 Далее» [Все]   Вниз
  Печать  
Автор Тема: Delphi как много в этом слове...  (Прочитано 10381 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« : 17 Ноябрь 2005, 01:40:47 »

 Начинающие и не только Делфисты! Задавайте свои вопросы и Вас услышат, помогут, подскажут...
Записан


Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #1 : 17 Ноябрь 2005, 01:46:48 »

 Первый вопрос: кто знает - подскажите, как обеспечить правильную работу компонента StatusBar? Пробовал через Timer но что-то не получается. Производится обработка данных, процедура с таймером включается и работает, но процесс выполнения в соответств. компоненте не отображается. Только по окончанию процесса выдается 100%.
« Последнее редактирование: 17 Ноябрь 2005, 01:50:19 от Lanser » Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #2 : 17 Ноябрь 2005, 12:18:31 »

StatusBar1.Panels[0].Text := IntToStr(iProgress);
Что тут может не отображаться???
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #3 : 17 Ноябрь 2005, 12:22:41 »

procedure TForm1.Button1Click(Sender: TObject);
var
 i : integer;
begin
 for i := 1 to 100 do begin
   StatusBar1.Panels[0].Text := IntToStr(i);
   StatusBar1.Refresh;
   sleep(100);
 end;
end;
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #4 : 17 Ноябрь 2005, 12:34:13 »

Вообще жаль но по-моему делфи умирает... если только борланды не продвинут таки Delphi.Net
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #5 : 17 Ноябрь 2005, 15:39:38 »

 А как же Delphi 8? По-моему там есть поддержка .Net, или я что-то путаю.
Записан


vervolf он же Бегемот
Настоящий гродненец
****

Репутация: +60/-2
Offline Offline

Пол: Мужской
Сообщений: 883


сижу, не шалю, починяю примус!

Просмотр профиля
« Ответ #6 : 17 Ноябрь 2005, 17:20:51 »

Есть. Только её не доделали. Я у себя поставил. Поюзал, да и перешёл на 7. Что-то мне не нравиться. Слышал вроде 2005 есть или это также 8?
Записан

we fly!
You die!!!
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #7 : 17 Ноябрь 2005, 18:00:15 »

Топик есть на 2 странице, по 2005 делфи
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #8 : 18 Ноябрь 2005, 13:19:23 »

 Подскажите как создать Alias для связи приложения с MS Excel (необходимо вытаскивать данные из разных листов), а то я что-то подзабыл.
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #9 : 18 Ноябрь 2005, 13:30:55 »

Закладка Servers - компонент ExcelApplication, кидаешь на форму,  и юзай интерфейс Excelя
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #10 : 18 Ноябрь 2005, 14:45:14 »

 Мне нужно связаться с книгой Excel-я и не с одним листом.
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #11 : 18 Ноябрь 2005, 17:51:46 »

ну правильно, что типа
procedure TForm1.Button1Click(Sender: TObject);
var
 wb : _WorkBook;
 ws : _Worksheet;
begin
 ExcelApplication1.Connect;
 try
   ExcelApplication1.Visible[0] := true;
   {wb := ExcelApplication1.Workbooks.Open('d:\test.xls', EmptyParam,
     EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
     EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);}
   wb := ExcelApplication1.Workbooks.Add('d:\test.xls', 0);
   ws := wb.Worksheets.Item[1] as _Worksheet;
   ws.Cells.Item[1, 1] := 'blabla';
 finally
   ExcelApplication1.Disconnect;
 end;
end;
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #12 : 18 Ноябрь 2005, 17:54:36 »

На самом деле метод Open  что то трапается, нет времени смотреть, но на самом деле подключиться к Excелю очень просто, и есть куча способов, с ранним связыванием (как на примере) или поздним, выбирай какой хочешь, а в инете примеров просто вагон
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #13 : 18 Ноябрь 2005, 18:01:07 »

А вот линк нашел, по этой инфе я когда то учился
ИСЧЕРПЫВАЮЩЕ :
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=249
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #14 : 18 Ноябрь 2005, 20:08:15 »

 Спасибо за советы. А есть ли что-либо подобное для Access-a?
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #15 : 18 Ноябрь 2005, 20:43:15 »

Не знаю, конечно, зачем к эксцесу обращаться через оле, если тебе нужно работать с таблицами, запросами вообщем с данными просто используй ADO,  и подключайся к таблицам Access, а вообще Ole сервера есть практически в любых серьезных программах - весь офис, AutoCAD, Corel даже 1с.
Записан

Дурак думает, умный действует по обстоятельствам.
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #16 : 19 Ноябрь 2005, 12:38:21 »

Цитировать
procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
begin
  for i := 1 to 100 do begin
    StatusBar1.Panels[0].Text := IntToStr(i);
    StatusBar1.Refresh;
    sleep(100);
  end;
end;


Вместо всяких рефрешей и слипов делается Application.ProcessMessages();

Кидайте вы дельфи, не очень перспективное направление. Я бы не выбирал эту среду для работы.
Записан

Нетолерантный человек.
7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #17 : 19 Ноябрь 2005, 17:41:45 »

Цитировать
Вместо всяких рефрешей и слипов делается Application.ProcessMessages();

1. Sleep() тут для задержки, имитирующей какую-то полезную работу. Это ведь пример.
2. Не факт, что Application.ProcessMessages() лучше в каждом конкретном случае. Он делает совсем другое - процессает мессаги, в т.ч. мессагу на отрисовку. При этом может иметь нежелательный побочный эффект - позволит юзеру нажать какую-нибудь кнопку, которую тиснуть не стОит сейчас. Refresh() же, делает только то, что делает :-) Хотя, конечно, при вдумчивом подходе, ProcessMessages() позволяет реализовать всевозможные паузы и канселы, если лень заморачиваться с многопоточностью :-)

Цитировать
Кидайте вы дельфи, не очень перспективное направление. Я бы не выбирал эту среду для работы.
Just offtopic :-)
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #18 : 21 Ноябрь 2005, 13:28:05 »

 Появился еще один вопрос: подскажите, как запустить другое приложение из создаваемого приложения Delphi? Например нужно запустить WinRAR.
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #19 : 21 Ноябрь 2005, 13:41:21 »

Самое тривиальное решение WinExec(), просто запускает приложение винды, также ShellExecute() - можно извратится с параметрами, нужный вид окна или просто открыть Explorer с нужной папкой
и самое продвинутое CreateProcess - позволяет дождаться момента когда процесс отработает, и твоя прога продолжит свою работу только после окончания данного процесса. Все эти апи смотри в MS SDK хелпе, там нормально описано

Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #20 : 21 Ноябрь 2005, 14:14:10 »

Дизайнерский вопрос: изпользование шкурок, как и чем.
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #21 : 21 Ноябрь 2005, 14:25:45 »

Тебе нужно сделать что то типа WinAmp? Тогда
вообще по%%ца придеться Улыбка
Если да смотри в поисковиках "задание окна непрямоугольной формы" - факов по этой теме дофига
Записан

Дурак думает, умный действует по обстоятельствам.
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #22 : 21 Ноябрь 2005, 14:59:26 »

Цитировать
1. Sleep() тут для задержки, имитирующей какую-то полезную работу. Это ведь пример.
2. Не факт, что Application.ProcessMessages() лучше в каждом конкретном случае. Он делает совсем другое - процессает мессаги, в т.ч. мессагу на отрисовку. При этом может иметь нежелательный побочный эффект - позволит юзеру нажать какую-нибудь кнопку, которую тиснуть не стОит сейчас. Refresh() же, делает только то, что делает :-) Хотя, конечно, при вдумчивом подходе, ProcessMessages() позволяет реализовать всевозможные паузы и канселы, если лень заморачиваться с многопоточностью :-)


в данном конкретном лучая как раз ProcessMessages самый лучший способ, т.к кроме статус бара еще и форма рефрешнется Улыбка
« Последнее редактирование: 21 Ноябрь 2005, 15:05:53 от Shura » Записан

Нетолерантный человек.
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #23 : 21 Ноябрь 2005, 15:08:09 »

Цитировать
Дизайнерский вопрос: изпользование шкурок, как и чем.


советую http://www.delphikingdom.ru/ -  там ответы на все твои вопросы касательно дельфи
Записан

Нетолерантный человек.
7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #24 : 21 Ноябрь 2005, 23:38:38 »

Цитировать

в данном конкретном лучая как раз ProcessMessages самый лучший способ, т.к кроме статус бара еще и форма рефрешнется Улыбка

А что, просили рефрешить всю форму? :-) А про нажимания кнопок, которые не предусмотрено нажимать, я уже писал.
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #25 : 22 Ноябрь 2005, 12:29:03 »

 Вот возникла проблемка. Приложение разработано, работает. Приходится обсчитывать динамический массив "в разных направлениях". Но возникает проблема: начинает работать, загружает систему по максимуму и вешает.
Как сделать, чтобы приложение не так сильно сьедала ресурсы?
Записан


Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #26 : 22 Ноябрь 2005, 15:36:58 »

Цитировать
Вот возникла проблемка. Приложение разработано, работает. Приходится обсчитывать динамический массив "в разных направлениях". Но возникает проблема: начинает работать, загружает систему по максимуму и вешает.
 Как сделать, чтобы приложение не так сильно сьедала ресурсы?


как это "вешает"? программа не может вычислениями повесить систему.
вообще все большие вычисления в отделльном потоке выполняй. Можешь ему делать Suspend если хочешь что-то приостановить Улыбка
Записан

Нетолерантный человек.
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #27 : 22 Ноябрь 2005, 15:38:25 »

Цитировать
А что, просили рефрешить всю форму? :-) А про нажимания кнопок, которые не предусмотрено нажимать, я уже писал.


Таки нажать на кнопку после одного Application.ProcessMessages ооооочень проблематично. Однако и это можно предусмотреть ... Улыбка
Записан

Нетолерантный человек.
7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #28 : 22 Ноябрь 2005, 18:14:29 »

Цитировать
Таки нажать на кнопку после одного Application.ProcessMessages ооооочень проблематично. Однако и это можно предусмотреть ... Улыбка

Таки нажать на кнопку ты можешь в любой момент до ProcessMessages, а она отработает в момент ProcessMessages. Это раз. А два - это то, что таких ProcessMessages будет не 1 а дофига, столько, сколько раз будет меняться статус при какой-то обработке. Так что, жми хоть обожмись :-)
А про предусмотреть я сам писал, перечитай выше.
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #29 : 22 Ноябрь 2005, 18:25:46 »

Цитировать
Вот возникла проблемка. Приложение разработано, работает. Приходится обсчитывать динамический массив "в разных направлениях". Но возникает проблема: начинает работать, загружает систему по максимуму и вешает.
 Как сделать, чтобы приложение не так сильно сьедала ресурсы?

Во-первых да, если ты не выставил сам нарочно HIGH_PRIORITY или (не дай боже) REALTIME_PRIORITY своему процессу, то систему повесить никак не выйдет. А то, что прога, отрабатывая циклы (не работая по событиям, например, по таймеру, прерываниям и т.п.) съедает 100% времени ЦП - что тут удивительного? Как бы компьютеры предназначены для того, чтобы работать, а не простаивать. Вот, например, видеопроигрыватель, тут другое дело. Он должен 25 (например) раз в секунду нарисовать очередной кадр. Если процессор справляется с поставленной задачей за 1/100 секунды, мы видим, что он жрет 25% процессорного времени. Плейер не должен приступать к декодированию следующего кадра как можно скорее после декодирования предыдущего, а то на быстрых тачках не успеешь в сюжет вникнуть :-) Вот он и курит после каждого кадра. Это так, грубо, для наглядности. У твоей же проги стоит задача посчитать данные как можно быстрее, без привязки к реальному времени. И ты что, хочешь, чтобы она тем не менее, не грузила проц на полную? Так не бывает :-)
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #30 : 22 Ноябрь 2005, 18:59:19 »

Если твои вычисления используют циклы - вот тут Улыбка как раз и пригодится Application.ProcessMessages, про них тут целая полемика была - зависает приложение я так понимаю как раз то, что приложение не реагирует на клики мышки и клавы - Application.ProcessMessages поможет, только воткни его в тело цикла
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #31 : 22 Ноябрь 2005, 20:29:19 »

 смысл программы именно в том, чтобы расчитывать одни и те же вычисления с большим количеством данных. И еще маленькое уточнение: как кто считает лучше загрузить все данные в память и оперировать ими или же считывать с диска по мере необходимости? Если загрузить все данные - требуется много памяти, читать с диска - процесс затягивается...
Записан


Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #32 : 22 Ноябрь 2005, 20:53:44 »

Цитировать
смысл программы именно в том, чтобы расчитывать одни и те же вычисления с большим количеством данных. И еще маленькое уточнение: как кто считает лучше загрузить все данные в память и оперировать ими или же считывать с диска по мере необходимости? Если загрузить все данные - требуется много памяти, читать с диска - процесс затягивается...



таки я не понял, что у тебя зависает, приложение или система?
Если "зависает" приложение, то ProcessMessages тебе поможет.
А лучше переводи все вычисления в поток. Помоему сейчас выражение "занимает много памяти" не актуально. Кстати "много" это сколько?. Если на самом деле много (больше гига :-) ищи золотую середину :-)
« Последнее редактирование: 22 Ноябрь 2005, 20:55:06 от Shura » Записан

Нетолерантный человек.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #33 : 22 Ноябрь 2005, 20:54:04 »

2Lanser
Какого рода данные?
В каких структурах хранишь на диске и в памяти?
Хотя бы примерно объем данных?
Какого рода манипуляции/вычисления с данными?
Как часто происходят вычисления?

Ты неточно поставил задачу
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #34 : 24 Ноябрь 2005, 13:34:45 »

 Данные хранятся в Excel - файле. Данные - текстовые и численные. Объем данных - от 2 Мb до 20 Mb. Сложно понять, что именно зависает. Иногда система даже на три клавиши не посылается...
Вычисления - очень интенсивные, В одном столбце приходится подсчитывать количество символов ("+" или "-") и анализировать построчно. Далее - разбиение по признакам, слитие данных соотв. признака в отдельный файл, подсчитывание среднего арифметического также по соотв. признаку... Вот далеко не полный список производимых вычислений...
Записан


Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #35 : 24 Ноябрь 2005, 14:08:54 »

Ты изначально делаешь неправильно
Я подозреваю что ты через оле лезешь в цикле в ячейки эксцеля и уже лопатишь данные одной ячейки - ЭТО очень медленно, аш 3,14здец, неудивительно что система тормозит.

Я бы делал так : копировал бы в буфер диапазон данных эксцеля, причем блоками строк по 1000, потому что кинуть в буфер сразу 20мб текста тоже еб%%во. Далее :

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 sl : TStringList;
 cp : TClipBoard;
begin
 cp := TClipBoard.Create;
 sl := TStringList.Create;
 try
   cp := TClipBoard.Create;
   sl.Text := cp.AsText;
   ShowMessage('Rec count : ' + IntToStr(sl.Count) + ' Text : ' + chr(10) + sl.Text);
   cp.Clear;
 finally
   cp.Free;
   sl.Free;
 end;
end;

все поля в строке отделены табами, а строки переносом строки, распарсить, можно пихнуть в структуру и потом анализируй себе Улыбка это будет на порядок быстрее и система не зависнет, причем 20 - 30 мег - это не факт
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #36 : 24 Ноябрь 2005, 14:10:32 »

Да забыл сказать, что перед
cp := TClipBoard.Create;
sl.Text := cp.AsText;
нужно средствами эксцеля выделить и скопировать диапазон ячеек с данными
Записан

Дурак думает, умный действует по обстоятельствам.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #37 : 24 Ноябрь 2005, 14:15:23 »

 Круто! Спасибо Tal и +!
Может подскажешь "через что" можно менять надписи в диаграмме Excel. Поле "Надпись"
Записан


7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #38 : 24 Ноябрь 2005, 14:39:20 »

Во, Tal тебе счас насоветует, как побыструхе утечку памяти сорганизовать :-) Tal, исправь ошибку! Смеющийся
« Последнее редактирование: 24 Ноябрь 2005, 14:48:51 от 7floor » Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #39 : 24 Ноябрь 2005, 14:43:18 »

Улыбка Пасибо, не, никогда не загонялся таким, нужно хэлп по виз бейсику смотреть, вроде бы

Set shpDiagram = ActiveSheet.Shape(1)
Set shpDiagram = Nothing

а какое проперти черт его знает
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #40 : 24 Ноябрь 2005, 14:44:58 »

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 sl : TStringList;
 cp : TClipBoard;
begin
 cp := TClipBoard.Create;
 sl := TStringList.Create;
 try
   //cp := TClipBoard.Create;
   sl.Text := cp.AsText;
   ShowMessage('Rec count : ' + IntToStr(sl.Count) + ' Text : ' + chr(10) + sl.Text);
   cp.Clear;
 finally
   cp.Free;
   sl.Free;
 end;
end;
Записан

Дурак думает, умный действует по обстоятельствам.
Tal
Гродненец
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 105


ну и кто сказал - что будем делать?

Просмотр профиля
« Ответ #41 : 24 Ноябрь 2005, 14:51:13 »

ПРостите Улыбка был напуган...
Записан

Дурак думает, умный действует по обстоятельствам.
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #42 : 24 Ноябрь 2005, 19:19:01 »

таки не хорошо буфер обмена прибивать.
вожно ведь просто данные из excel перекачать в дельфи и там сними работать, не дергая ole ...

раньit так afalina работала, но потом откащались от использования буфера обмена ...

Вообще как вариант можно написать макрос в экселе, который тебе все посчитает, и выдаст результат, и диаграммы исправит. Тебе его только вызвать надо будет. Имхо самое лучше ...

« Последнее редактирование: 24 Ноябрь 2005, 19:21:11 от Shura » Записан

Нетолерантный человек.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #43 : 24 Ноябрь 2005, 19:28:48 »

 Извиняйте, мы парни не местные, VB не знаем, поэтому пишем тем, что имеем  Смеющийся
Записан


Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #44 : 24 Ноябрь 2005, 22:04:15 »

Цитировать
Извиняйте, мы парни не местные, VB не знаем, поэтому пишем тем, что имеем  Смеющийся


это кстати проще чем дельфи Подмигивающий
Записан

Нетолерантный человек.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #45 : 25 Ноябрь 2005, 12:03:30 »

Цитировать

это кстати проще чем дельфи Подмигивающий


Но мы же не привыкли идти легкими путями  Подмигивающий.
Все удовольствие от программирования как раз и заключается в том, чтобы найти в клубке запутанных сущностей простейшие задачи и правильно их реализовать.
Ладно, отвлекся... Как говориться, если гора не идет к Магомету... и т.д. В своей практике никогда не приходилось детать отчет в виде текста и графиков на одной странице А4. Может кто уже делал? Подскажите путь.
Записан


iced
Гость


Email
« Ответ #46 : 25 Ноябрь 2005, 14:01:57 »

меня сейчас конечно пошлют... ;] но почему бы не использовать специально предназначенные для данной работы тулзы (ака базы данных). скорее всего данную задачу можно будет решить одним запросом.

PS. ну и в случае необходимости работать с экселем (с трудом предоставляю себе такую ситуацию) я бы написал небольшой макрос который бы экспортнул данные в цсв и работал бы уже с ним (макрос мона дёргать уже из дельфей при каждом запуске).

PPS. как верно тут упомянули выдёргивание данных поячеечно - ОЧЕНЬ тормозной процесс - надо дёргать всё сразу - ускорит работу на 2 порядка как минимум (по крайней мере так оно было в году 98ом).

PPPS. что бы гуй не вис - пускаем обработку в отдельном треде - это стандартный и правильный путь.
Записан
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #47 : 28 Ноябрь 2005, 14:08:56 »

 To IceD: опиши пример отдельного треда.
Записан


iced
Гость


Email
« Ответ #48 : 29 Ноябрь 2005, 13:05:55 »

1. делаем тред
2. пускаем обработку в нём
Записан
Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #49 : 29 Ноябрь 2005, 15:23:52 »

Цитировать
To IceD: опиши пример отдельного треда.


смотри TThread и delphikingdom там ооочень много примеров
Записан

Нетолерантный человек.
7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #50 : 30 Ноябрь 2005, 01:16:41 »

А еще вот тут посмотри:
C:\Program Files\Borland\Delphi7\Demos\Threads
... или где там у тя дельфя стоит Смеющийся
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #51 : 30 Ноябрь 2005, 02:02:54 »

 Меня давно терзал вопрос: можно ли сделать панель кнопок сложной формы (типа на видеомагнитофонах управляющая)?
Записан


Shura
Почетный гродненец
*****

Репутация: +416/-11
Offline Offline

Пол: Мужской
Сообщений: 2897


Просмотр профиля
« Ответ #52 : 30 Ноябрь 2005, 13:17:55 »

Цитировать
Меня давно терзал вопрос: можно ли сделать панель кнопок сложной формы (типа на видеомагнитофонах управляющая)?


ты это уже спрашивал. Можно, используя винапи нужно описывать регионы формы для прорисовки.
Если же тебе нужны контролы сложной формы, то тебе надо прорисовывать их вручную.

Найти тебе пример в интернете? Улыбка
« Последнее редактирование: 30 Ноябрь 2005, 13:20:11 от Shura » Записан

Нетолерантный человек.
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #53 : 30 Ноябрь 2005, 14:49:13 »

 To Shura: Вопрос был по форме, а не по сложной кнопке управления. Было бы замечательно увидеть пример. Но как прорисовывать? В чем и какой формат изображения?
Записан


Chevich
Настоящий гродненец
****

Репутация: +13/-0
Offline Offline

Пол: Мужской
Сообщений: 385


..добрый я сегодня...

Просмотр профиля
« Ответ #54 : 30 Ноябрь 2005, 16:20:59 »

Цитировать
To Shura: Вопрос был по форме, а не по сложной кнопке управления. Было бы замечательно увидеть пример. Но как прорисовывать? В чем и какой формат изображения?

Любая кнопка это по-сути окно.
Окно может быть сделано композицией графических объектов (полигонов, кругов, квадратов, точек и т.д.)
Значит любая кнопка может выглядеть как угодно..  Целующий
Только это уже не столько Дельфи сколько голый АПИ...  Грустный
И море гемора..
И пример этого надо искать не в Дельфи, а в МСДН-е...
Записан

Все что написано выше является моим собственным мнением... :-)
Paladin
FUCK GMmmm
Губернатор
*****

Репутация: +501/-51
Offline Offline

Пол: Мужской
Сообщений: 11862


Просмотр профиля
« Ответ #55 : 30 Ноябрь 2005, 23:21:04 »

" Только это уже не столько Дельфи сколько голый АПИ..."

Та какой апи! Этож основы объектно ориентированного программирования! Улыбка)))
Записан
Chevich
Настоящий гродненец
****

Репутация: +13/-0
Offline Offline

Пол: Мужской
Сообщений: 385


..добрый я сегодня...

Просмотр профиля
« Ответ #56 : 01 Декабрь 2005, 12:03:03 »

Цитировать
Та какой апи! Этож основы объектно ориентированного программирования! Улыбка)))

ИМХО все ж голый АПИ
----------------------------------------------------
Constructor TSplashForm.Create(AOwner:TComponent);
Const B=8; D=100+B;
Var R1,R2:HRgn;
Begin
 // Создаем форму и 2 временных эллипсных региона
 Inherited Create(AOwner);
 R1:=CreateEllipticRgn(B,B,Width-B,Height-B);
 R2:=CreateEllipticRgn(D,D,Width-D,Height-D);
 // Создаем результирующий регион, как разность первых двух
 FRgn:=CreateEllipticRgn(B,B,Width-B,Height-B);
 CombineRgn(FRgn,R1,R2,RGN_DIFF);
 // Устанавливаем регион окна и освобождаем временные ресурсы
 SetWindowRgn(Handle,FRgn,False);
 DeleteObject(R2);
 DeleteObject(R1)
End { TSplashForm.Create };
-------
Записан

Все что написано выше является моим собственным мнением... :-)
H.A.M.
Гродненец
**

Репутация: +7/-0
Offline Offline

Пол: Мужской
Сообщений: 219


I love money and dollars

Просмотр профиля
« Ответ #57 : 04 Декабрь 2005, 04:59:16 »

Ну лана, делфисты, ответьте плиз на вопрос (когда-то давно надо было-так и не допер как, а ща просто интересно знает ли кто):
Есть два ричэдита. один рид-онли. во втором пишу текст. Нада чтоб в первом (который рид-онли) повторялось все как в первом в плане прокрутки вверх/вниз. Т.е. чтоб по вертикали они были полностью синхронизированы. (в рид-онли-нумерация строк для второго эдита)
P.S.:Я нашел туеву хучу доков на эту тему в нете. Но никто не предложил толкового решения-всегда были недостатки-либо после ввода глюк, глибо када мышой афиговенно быстро скрол подергать все сбивалось, либо еще что-то. Пока никто не смог толком ответить...
Записан

7floor
Автолюбитель
Губернатор
*****

Репутация: +709/-5
Offline Offline

Пол: Мужской
Сообщений: 10506


Я люблю разные вещи!

Просмотр профиля
« Ответ #58 : 04 Декабрь 2005, 16:28:21 »

А почему сразу дельфисты? Тебе нужны не они, а Win32 API-сты :-)
Записан

Древняя китайская мудрость гласит: "Когда нечего сказать, но очень хочется, скажи древнюю китайскую мудрость!"
Я на drive2.ru
Archi
Почетный гродненец
*****

Репутация: +25/-1
Offline Offline

Пол: Мужской
Сообщений: 1176


Unsilent Chburashko in the northern sky

Просмотр профиля WWW
« Ответ #59 : 04 Декабрь 2005, 17:50:05 »

Цитировать
Ну лана, делфисты, ответьте плиз на вопрос (когда-то давно надо было-так и не допер как, а ща просто интересно знает ли кто):
Есть два ричэдита. один рид-онли. во втором пишу текст. Нада чтоб в первом (который рид-онли) повторялось все как в первом в плане прокрутки вверх/вниз. Т.е. чтоб по вертикали они были полностью синхронизированы. (в рид-онли-нумерация строк для второго эдита)
P.S.:Я нашел туеву хучу доков на эту тему в нете. Но никто не предложил толкового решения-всегда были недостатки-либо после ввода глюк, глибо када мышой афиговенно быстро скрол подергать все сбивалось, либо еще что-то. Пока никто не смог толком ответить...


1) Пользовать GetScrollInfo(...), SetScrollInfo(...), GetScrollPos(...) и SetScrollPos(...).

2) Ловить WM_VSCROLL и ему сопутствующие:
SB_LINEUP
SB_LINEDOWN
SB_PAGEUP
SB_PAGEDOWN
SB_THUMBPOSITION
SB_ENDSCROLL
SBM_GETPOS
SBM_SETPOS

И иллюстрация.


P.S. RTFMSDN!!!
« Последнее редактирование: 04 Декабрь 2005, 17:57:38 от Archi » Записан

У меня дикая аллергия на тупость. Я сразу покрываюсь сарказмом.
H.A.M.
Гродненец
**

Репутация: +7/-0
Offline Offline

Пол: Мужской
Сообщений: 219


I love money and dollars

Просмотр профиля
« Ответ #60 : 05 Декабрь 2005, 04:15:43 »

2Nobody: Да, ты круто сказал-много и по делу. Я не иронизирую, все ОК! Но это все пробовалось. Более того, мне в свое время высылали готовый код (на, мол, ламер, посмотри)-но я же говорю: не падеть. Простым ловлением ничего не получается. А, лано, забыли. Так спросил, от нечего делать.
И ваще, это ж несерьезно-текстовый редактор на дельфи!!!
Записан

Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #61 : 05 Декабрь 2005, 19:39:55 »

 Как создать таблицу в Interbase (Paradox) в программе?
Записан


Archi
Почетный гродненец
*****

Репутация: +25/-1
Offline Offline

Пол: Мужской
Сообщений: 1176


Unsilent Chburashko in the northern sky

Просмотр профиля WWW
« Ответ #62 : 06 Декабрь 2005, 02:23:52 »

Цитировать
Простым ловлением ничего не получается.


Мало поймать, надо еще обработать и вернуть.

P.S.По делу была только одна строчка, про MSDN.

P.P.S. Чему вас в университете учат?
Записан

У меня дикая аллергия на тупость. Я сразу покрываюсь сарказмом.
H.A.M.
Гродненец
**

Репутация: +7/-0
Offline Offline

Пол: Мужской
Сообщений: 219


I love money and dollars

Просмотр профиля
« Ответ #63 : 06 Декабрь 2005, 03:37:36 »

Нас в универе? Ну вот:

Белорусский язык, бухгалтерский учет, философия, история, теория вероятности...

Ну ты понял, да?
Цитировать
Мало поймать, надо еще обработать и вернуть.

ОБРАБОТАТЬ И ВЕРНУТЬ. Ну дык не настолько нас не учат Ж))
Записан

Draco
Я дышу огнём
Почетный гродненец
*****

Репутация: +104/-1
Offline Offline

Пол: Мужской
Сообщений: 1221


У меня всё есть

S Просмотр профиля WWW
« Ответ #64 : 15 Декабрь 2005, 02:52:51 »

Вот такая проблема... Есть форма, есть панелька(TPanel) с фасками. Как изменить цвет фаски?
Записан

Бог умер © Ницше
Ницше умер © Бог
Бугога © Смерть
----------------
Сделаю вам сайт. http://www.imove.by/
Draco
Я дышу огнём
Почетный гродненец
*****

Репутация: +104/-1
Offline Offline

Пол: Мужской
Сообщений: 1221


У меня всё есть

S Просмотр профиля WWW
« Ответ #65 : 15 Декабрь 2005, 03:01:46 »

Вид такой...
Записан

Бог умер © Ницше
Ницше умер © Бог
Бугога © Смерть
----------------
Сделаю вам сайт. http://www.imove.by/
Lanser
Почетный гродненец
*****

Репутация: +169/-0
Offline Offline

Пол: Мужской
Сообщений: 1334


Никогда не сдавайся! [Уехал в Островец]

Просмотр профиля Email
« Ответ #66 : 20 Декабрь 2005, 22:03:08 »

 Еще вопросик: Подскажите свойства RichEdit.* для выравнивания текста по левому/правому краю и центровке?
Записан


Draco
Я дышу огнём
Почетный гродненец
*****

Репутация: +104/-1
Offline Offline

Пол: Мужской
Сообщений: 1221


У меня всё есть

S Просмотр профиля WWW
« Ответ #67 : 22 Декабрь 2005, 00:54:56 »

Фаска, это Bevel. Я уже нашёл, королевство делфи рулит в таких вопросах. Надо писать свой компонент, в котором переопределять метод paint
Записан

Бог умер © Ницше
Ницше умер © Бог
Бугога © Смерть
----------------
Сделаю вам сайт. http://www.imove.by/
Страниц  : 1 2 3 Далее» [Все]   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2024, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,298 секунд. Запросов: 19.