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

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

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

ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 4

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).

Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:09 28-06-2009 | Исправлено: psa1974, 12:00 02-02-2010
    data man



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Andrey128
    Навороченный вариант (полная поддержка W7 Taskbar'а) - http://www.gumpi.com
    Архив бета-версии
     
    Вариант попроще (только прогресс-бар) http://alex.ciobanu.org/?p=215

    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 08:53 20-10-2009 | Исправлено: data man, 09:00 20-10-2009
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как в delphi скопировать дипазон ячеек с листа excel и вставить их на том же листе только в другое место

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:13 20-10-2009
    andrewtishkin



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SIgor33
    Попробуй включить запись макроса, проделай эту операцию ручками, ну а потом проанализируй полученный код макроса...

    ----------
    111 222 [u]333[/u] [strike]епра[/strike] [size=3]пвр[/size] [sub]енн[/sub] [sup]ррр[/sup] :biggrin: [hr] [url=:javascript:alert("qwe")]ппп[/color]v 123 Мелкий шрифт

    Всего записей: 781 | Зарегистр. 28-08-2008 | Отправлено: 09:35 20-10-2009
    Vladkyr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SIgor33
    Попробуй так:

    Код:
     
    // Копируем Range
        ExcelObj.Range['A1:C3'].Copy;
    // Указываем место, куда копировать
        Worksheet.Cells[10, 1].Select;
    // Копируем
        Worksheet.Paste;
     

    Полный текст процедуры здесь:
    Подробнее...

    Всего записей: 26 | Зарегистр. 28-12-2006 | Отправлено: 10:05 20-10-2009
    Andrey128

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    data man
    Спасибо за наводку!
    Сейчас сижу на D2009, краем глаза глянул исходники D2010, а там уже описан интрефейс ITaskbarList3.
    Дождусь FIBPlus для D2010 и тогда уже реализую задуманное.

    Всего записей: 408 | Зарегистр. 16-01-2003 | Отправлено: 11:25 20-10-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Andrey128
    FIBPlus давно вышел под D2010.

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 11:37 20-10-2009
    JohnSilver182



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

    Цитата:
    как убить поток, вызываемый N-количеством (экземпляров) классов?
    Если речь о первом варианте вопроса и касается классов, то все просто: в конструкторе класса  передаешь ссылку на поток, создающий экземпляр этого класса. А в самом классе там где выполняются "глубинные процессы по обработке" проверяешь значение св-ва Terminated твоего потока

     
    ШАМАН !!!

    Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 11:57 20-10-2009
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnSilver182
    Классический пример взаимодействия объекта, создающего другие объекты, с этими созданными им объектами - коллекции (TCollection) и элементы коллекций (TCollectionItem). Там каждый элемент коллекции "знает" своего владельца и взаимодействует с ним. Посмотри как там это сделано...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 13:43 20-10-2009
    pakusya

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. Помогите пожалуйста с checkbox. даны две формы , на главной форме установлен checkbox ,если он отмечен, то во второй форме в Memo добавляется строка "житель Владивостока ". Объясните пожалуйста   как это сделать  

    Всего записей: 21 | Зарегистр. 17-10-2008 | Отправлено: 13:52 20-10-2009
    Vladkyr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    pakusya
     
    делается так:

    Код:
     
    procedure TForm1.checkbox1Click(Sender: TObject);
    begin
      Form2.Memo1.Lines.Add('житель Владивостока');
    end;
     

    при условии, что форма 2 создается автоматически

    Всего записей: 26 | Зарегистр. 28-12-2006 | Отправлено: 14:45 20-10-2009
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrewtishkin
    в excel макрос выглядит так
     Worksheets("Сводный").Range(Worksheets("Сводный").Cells(1, 36), Worksheets("Сводный").Cells(2228, 39)).Copy _
     Destination:=Worksheets("Сводный").Range(Worksheets("Сводный").Cells(1, 40), Worksheets("Сводный").Cells(2228, 43)
    и все работает
    а как delphi это приделать не получается
    хотел попробовать совет
    Vladkyr

    Цитата:
    ExcelObj.Range['A1:C3'].Copy;  
    // Указываем место, куда копировать  
        Worksheet.Cells[10, 1].Select;  
    // Копируем  
        Worksheet.Paste;

    Но сдесь ни лист не указан и дипазон как то странно задан
     
     

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 15:13 20-10-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SIgor33
    Какой это офис такое выдает?
    У меня в 2003 такое

    Код:
     
    Range("A1:B2").Select
    Selection.Copy
    Range("D5").Select
    ActiveSheet.Paste
     

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 15:45 20-10-2009
    Vladkyr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SIgor33
    Посмотрите полный текст процедуры в предыдущем посте.
    Если нужно работать с конкретной книжкой и конкретной страницей, тогда можно сделать так:

    Код:
     
        ...
        Workbook := ExcelObj.Workbooks.Add('Book.xls');
        Workbook.Worksheets['SheetName'].Activate;
        Worksheet := ExcelObj.ActiveSheet;
       ...
     

    а дальше делаете, как было написано

    Всего записей: 26 | Зарегистр. 28-12-2006 | Отправлено: 17:08 20-10-2009
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    volser
    Vladkyr
    Спасибо за советы проблему решил так
      Workbook.Sheets['Сводный'].Range[Workbook.Sheets['Сводный'].Cells[1, 20], Workbook.Sheets['Сводный'].Cells[2228, 23]].Copy(Workbook.Sheets['Сводный'].Range[Workbook.Sheets['Сводный'].Cells[1, 24], Workbook.Sheets['Сводный'].Cells[2228, 27]]);

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:08 21-10-2009
    mdid

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

    Код:
     
    GoodsHistory=record
    hs,hs1 : GoodsHistory;  
     

    как без сравнения записей сравнить данные?...в общем как бы так как показано ниже..только так компилятор ругается

    Код:
     
    if hs<>hs1 then  
     

    не катит..

    Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 11:00 21-10-2009 | Исправлено: mdid, 11:14 21-10-2009
    Vladkyr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mdid
     
    Начиная с Delphi 2007 есть такая штука, как перегрузка операторов. Т.е. для класса или рекорда можно написать следующее:

    Код:
     
    type
       TMyRec = record
          class operator Equal(a: TMyRec ; b:TMyRec ) : Boolean;
          class operator NotEqual(a: TMyRec ; TMyRec ) : Boolean;
       end;
     
      class operator TMyRec.Equal(TMyRec ; TMyRec ) : Boolean;
    begin
       // ...
    end;
     
     
     

    и далее описать, что нужно сравнивать в рекорде, чтобы два объекта считались равными или нет.
    И после этого можно будет писать, как хотелось во втором случае.

    Всего записей: 26 | Зарегистр. 28-12-2006 | Отправлено: 11:28 21-10-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mdid
    Никак. Напишите метод и вызывайте его.

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 11:28 21-10-2009
    data man



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

    Код:
     
    uses
      SysUtils;
    ...
    if not CompareMem(@hs, @hs1, SizeOf(GoodsHistory)) then
     ...

    Но, смотря что хранится в GoodsHistory.
    И вариант, предложенный Vladkyr - лучше. Если, конечно, Delphi не очень старая.

    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 11:33 21-10-2009 | Исправлено: data man, 11:36 21-10-2009
    mdid

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

    Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 11:54 21-10-2009
    NOwlar



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Vladkyr
     
    К великому сожалению, как я недавно выяснил, перегрузка операторв для Delphi for Win32 работает только для рекордов...

    Всего записей: 170 | Зарегистр. 25-01-2006 | Отправлено: 12:05 21-10-2009
       

    Страницы: 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 (до версии 2009) - часть 5
    ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru