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

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

   

Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
b1t
А это просто один человек решил помочь начинающим программистам в использовании WinApi. Это построение и интерфейса и плюс некоторые другие возможности. Все легко. Тем более он комментирует в исходнике что куда и зачем. Берете Делфи и на радостях компилируйте.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 20:49 03-11-2007
kalkin

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как отобразить картинку с http на форме, загрузив в TImage,
не создавая временный файл на винчестере

Всего записей: 56 | Зарегистр. 19-05-2006 | Отправлено: 22:40 03-11-2007
nuker2015



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

Цитата:
Подскажите как отобразить картинку с http на форме, загрузив в TImage,
не создавая временный файл на винчестере
ну нечто подобное(сейчас дельфи нет под рукой, опишу общий смысл):
var
imgListPaths пусть будет Tstringlist - заполни его предварительно путями картинок.
imgList пусть будет TList чтоли, там вроде можно ссылки хранить.  
tm pImg: TImage;
 
for i=0 to imgList.count-1 do begin
  tmpImg:=TImage.Create(nil);
  tmpImg.LoadFromFile(imgList.WStrings[i]);
  imgListPtrs.addObject(tmpImg);
  tmpImg.free;
 end;
 
Кидаешь на форму TDrawGrid и гдето в onCellPaint(вроде так называлось)
рисуешь вроде этого:
 (imgListPtrs.items[i] as TImage).draw(cellRect.left,cellRect.top);
--- я только наводку дал, на дельфи не писал давно, надеюсь смысл понятен.
 
Добавлено:
b1t
Цитата:
вот нашол например:
http://www.delphisources.ru/pages/faq/base/comps_list.html
хотел эта программа, чтоб разработывать "под себя", типа я делал !  
Просто там только исходник, а интерфейс (обший проект) незнаю откуда взять !  

Что-то смотрю обленились совсем...  как нестыдно.
Вверху какие объекты присутствуют?
Код:
TNetForm = class(TForm)
    ListView1: TListView;
    ImageList1: TImageList;
    Button1: TButton;
    Edit1: TEdit;
    Timer: TTimer;
    Label1: TLabel;
    Button2: TButton;

Что еще надо? создаешь проект(форма автоматом создается - уж извини), кидаешь объекты из вышеперечисленных, заполняешь события по коду.
Да простят меня модераторы, зачем я вообще это пишу..
PS: Кстати еще не факт что код рабочий...

Всего записей: 132 | Зарегистр. 26-10-2005 | Отправлено: 01:42 04-11-2007
b1t



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
 
Уменя есть на диске все версии ! в каком есть встроенный этот библиатека?  
 
Добавлено:
nuker2015
 
Если я все это знал, я вообше не просил помощь по делфи !  
вот что надо иметь ввиду до того, чтоб писать какую-ту очередную "умные мысли" !

Всего записей: 299 | Зарегистр. 26-06-2007 | Отправлено: 10:17 04-11-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kalkin
Используй TMemoryStream, причем это применимо в большинстве случаев когда требуется передать какие-то данные от одного компонента другому.
Если заранее известен формат картинки можно сделать так:

Код:
var
  ms: TMemoryStream;
  gif: TGIFImage;
begin
  ms := TMemoryStream.Create;
  IdHTTP1.Get('http://i.ru-board.com/avatars/pikachu.gif', ms);
  ms.Position := 0;
   
  gif := TGIFImage.Create;
  gif.LoadFromStream(ms);
  Image1.Picture.Assign(gif);
  gif.Free;
 
  ms.Free;

только ранее в uses надо подключить GIFImg (TJPEGImage и модуль JPEG соответственно для .JPG-изображения)
Если же формат заранее неизвестен, то можно попытаться определить расширение из URL и использовать соответствующий класс

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 10:30 04-11-2007 | Исправлено: RomanTim, 20:08 04-11-2007
kalkin

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

Всего записей: 56 | Зарегистр. 19-05-2006 | Отправлено: 22:13 04-11-2007
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
b1t
Что именно у вас есть? Версии LENIN INC WIN32API Library или Delphi разных версий?
 
Народ, требуется ваша помощь. Захотелось приукрасить программу. Вот ссылка на оригинальный код http://rapidshare.com/files/67441774/snow.zip.html
Решил я это дело через WinApi пустить, но заморочка у меня с таймером, потому как в оригинале идет работа с формой и там есть компонент Timer. А тут нельзя использовать компонент.
Вот что я сделал.
 
Читать дальше.. [?]

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 22:14 04-11-2007
b1t



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Уменя есть все версии ДЕЛФИ.

Всего записей: 299 | Зарегистр. 26-06-2007 | Отправлено: 11:36 05-11-2007
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
b1t
Вам надо скачать LENIN INC WIN32API Library.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 13:20 05-11-2007
lavren



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

Цитата:
заморочка у меня с таймером

Есть SetTimer в WinApi. Помню когда-то пробовал но исходники не могу найти.

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 14:32 05-11-2007
TankMan



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Может кто помочь? У меня такая задача - хочу в TVirtualTreeView а точнее DrawTreeView (кажись так) сделать так, чтобы занося данные в колонку (у меня она только одна) при достижении нижнего края компонента DTV не скроллинг появлялся, а новые даннные отображались в новой, второй колонке, т.е. чтобы данные отображались не в столбик а в несколько столбиков. т.е. если у меня 21 запись например, то у меня было бы не 21 строчка а 3 столбика по 7 строчек. Возможно это сделать?

Всего записей: 599 | Зарегистр. 01-06-2002 | Отправлено: 14:53 05-11-2007
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lavren
Да в том то и дело я даже не знаю к какому хэндлу таймер применять. Думал может к контексту в том исходнике. Мне даже непонятны некоторые значения в этой функции, не то чтобы к какому-то буферу там чего-то применять... Поэтому и хочется чтобы помогли. Подозреваю что надо использовать еще WM_TIMER и в WM_INITDIALOG пихать чего-то...

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 15:21 05-11-2007
lavren



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Поиск рулит в интернете!  Гугл выдал:
http://www.codenet.ru/progr/delphi/WinAPI/SetTimer.php
http://sources.ru/msdn/library/using_timers.shtml
Сам нашел:
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=45719
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=25449
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=20487

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 17:07 05-11-2007 | Исправлено: lavren, 17:15 05-11-2007
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lavren
Спасибо. Сейчас гляну, может чего и пойму.
 
Добавлено:
Нет... Что-то не получилось. Как-то неудачно. Сложновато для меня.
Ладно вот еще нашел.
 
Читать дальше.. [?]

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 17:32 05-11-2007
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Сделай минимально необходимый проект, а то в твоей портянке разбираться откровенно лень.
 
Если компилятор считает классы не совместимыми, значит либо они не совместимы, либо необходимо произвети явное приведение типов.
А в твоем случае поможет явное указание какую из процедур RegisterClass ты хочешь использовать. Компилятор хочет использовать из classes. А ты хочешь из windows. и пока ты не объяснишь компилятору свою хотелку, он будет матюкаться.
Так что учи матчасть.
 
необходимо написать windows.RegisterClass(...).
 
 
на счет таймера прочитай справку. там указано что можно не использовать хендл окна. Может тебе это поможет?

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 09:46 06-11-2007 | Исправлено: vserd, 09:47 06-11-2007
lavren



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

Цитата:
там указано что можно не использовать хендл окна

Этот способ описан в статях по ссылках выше!

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 14:50 06-11-2007
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vserd
Спасибо, получилось. Просто я не создаю окна через голый код, а гружу из ресурсов, поэтому мне до регистрации классов/окон еще каких-то.
Попробовал я и ужаснулся - ресурсов жрет немерянно... Может кто-нибудь всречал какие-нибудь эффекты на WinAPI? Хотелось бы найти эффект воды на картинке.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 19:22 06-11-2007 | Исправлено: Maks150988, 19:23 06-11-2007
adg208

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Использую Delphi7, база данных сделана в Access
Формирует в Excel отчет к примеру
 
--------------------------------------------------------------------------------------------
N п/п    Наименование СИ    Тип СИ        Номер СИ    Место расположения        
-------------------------------------------------------------------------------------------        
1    ГАЗОАНАЛИЗАТОР     DGE-2000    1861            101
--------------------------------------------------------------------------------------------
2    ГАЗОАНАЛИЗАТОР         DGE-2000    1862            101
--------------------------------------------------------------------------------------------
3    ГАЗОАНАЛИЗАТОР     ГТХ-1М             577/411            1017
--------------------------------------------------------------------------------------------
 
Подскажите как сделать так чтоб отчет формировался в виде
 
---------------------------------------------------------------------------------------------
N п/п    Наименование СИ    Тип СИ           Номер СИ    Место расположения
---------------------------------------------------------------------------------------------        
                                                           101
--------------------------------------------------------------------------------------------
1    ГАЗОАНАЛИЗАТОР    DGE-2000    1861               101
---------------------------------------------------------------------------------------------
2    ГАЗОАНАЛИЗАТОР    DGE-2000    1862               101
--------------------------------------------------------------------------------------------
                                                          1017
---------------------------------------------------------------------------------------------
3    ГАЗОАНАЛИЗАТОР    ГТХ-1М                577/411              1017
--------------------------------------------------------------------------------------------
Заранее благодарен!
 

Всего записей: 159 | Зарегистр. 26-12-2003 | Отправлено: 08:22 07-11-2007
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
adg208
код в студию, телепатов нет)

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 08:46 07-11-2007
adg208

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Примерно так
 
//------------------------------------------------------------------------------
//Процедура формирует в Excel основные строки СИ
 
procedure SiExcel(index: Integer; j: Integer; Sheet: Variant);
begin
  Sheet.Rows[26].Copy(Sheet.Rows[index+1]); //Копирует 24 строку Excel в 25
  Sheet.Cells[index,1]:=j; //N п/п
  Sheet.Cells[index,2]:=DataModule2.TableSi.Fields.Fields[5].AsString; //Инвентарный номер
  Sheet.Cells[index,3]:=DataModule2.TableSi.Fields.Fields[2].AsString; //Наименование СИ
  Sheet.Cells[index,4]:=DataModule2.TableSi.Fields.Fields[3].AsString; //Тип СИ
  Sheet.Cells[index,5]:=DataModule2.TableSi.Fields.Fields[4].AsString; //Номер СИ
  Sheet.Cells[index,6]:=DataModule2.TableSi.Fields.Fields[16].AsString; //Место расположения
//  Sheet.Cells[index,7]:=DataModule2.TableSi.Fields.Fields[11].AsString+' '+
//                          DataModule2.TableSi.Fields.Fields[13].AsString; //шкала
  Sheet.Cells[index,7]:=DataModule2.TableSi.Fields.Fields[8].AsString+' '+
                        DataModule2.TableSi.Fields.Fields[10].AsString; //Предел измерения
  Sheet.Cells[index,8]:=DataModule2.TableSi.Fields.Fields[19].AsFloat; //Класс точности
  Sheet.Cells[index,9]:=DataModule2.TableSi.Fields.Fields[7].AsString; //Дата последнего клеймения
  Sheet.Cells[index,10]:=DataModule2.TableSi.Fields.Fields[20].AsInteger; //Периодичность поверки, калибровки (месяцев)
end;
 
procedure TFormGrafPov.Button1Click(Sender: TObject);
var
  XLApp, Sheet: Variant;
  index,ind, i,j: Integer;
  DMY,KS1: TDate;
  KolMonth: Integer;
  Y1: Word; //месяц, Y1=(год+период поверки), Y2=(год+(период поверки умноженный на два))
  str,str1:String;
begin
  XLApp:=CreateOleObject('Excel.Application');
  XLApp.WorkBooks.Open('d:\pr\metr\db' + '\График поверки и калибровки.xls');
  Sheet:=XLApp.WorkBooks[1].WorkSheets['График'];
  XLApp.Visible:=true;
   
  DataModule2.TableSi.IndexFieldNames:='KID'; //сортирует таблицу по полю KID
  index:=26; //в EXCEL начинается с 26 строки
  j:=1;
  ind:=24;
  str1:='';
 
  DataModule2.TableSi.First;
  for i:=0 to DataModule2.TableSi.RecordCount-1 do //Начало цикла
    begin
//Если поле  "установка/цех" есть в таблице, то выводим только строки с этой установкой/цехом
      if DataModule2.TableSi.Fields.Fields[18].AsString=ComboBox.Text then
        begin  
 
 
//берем из таблицы ADOTableSi столбец дата последнего клеймления-"ADOTableSiDateCleim"
//преобразуем его в дату и присваиваем переменной DMY
          DMY:=DataModule2.TableSi.Fields.Fields[7].AsDateTime;
//берем из таблицы ADOTableSi столбец период поверки(калибровки)-"ADOTableSiPeriodPK"
//преобразуем его в число и присваиваем переменной KolMonth
          KolMonth:=StrToInt(DataModule2.TableSi.Fields.Fields[20].AsString);
//Получаем дату вычисленную из месяца последнего клеймления плюс количество месяцев периода поверки
          KS1:=SummMonth(KolMonth,DMY);
//получаем год из даты KS1
          Y1:=YearOf(KS1);
          if Label3.Caption='' then
            Label3.Caption:='0';
//Если дата последнего клеймления+ период калибровки не равны выбранным годам,
//то просто выводи пустое поле СИ
          if (Y1 <> (YearOf(DateTimePicker.Date))) and (Y1<>(StrToInt(Label3.Caption))) then
            begin
              SiExcel(index,j,Sheet); //
 
              Inc(index);
              Inc(j);
              DataModule2.TableSi.Next;
            end;
 
        end;
    end;
 
end;

Всего записей: 159 | Зарегистр. 26-12-2003 | Отправлено: 09:06 07-11-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