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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



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

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


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


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    XPerformer
    FindKey или Locate или средствами самого грида (если это cxGrid - DataController.LocateByKey())

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 11:08 12-06-2012 | Исправлено: salexn1, 11:12 12-06-2012
    XPerformer



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Locate все-таки не будем рассматривать (на больших таблицах медленно, а на маленьких и проблемы в принципе нет), но это мелочь...
    Для случая не cxGrid : как поможет Findkey выйти на соседнюю запись с удаленной, если датасет не отсортирован по ПК?
    (я к тому клоню, что в общем случае полноценной альтернативы букмаркам нету, может, ошибаюсь)

    Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 11:18 12-06-2012
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    XPerformer
    нужно придумывать как быть в таких случаях...
     
    Ну а вообще, букмарки - это тру.

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 12:25 12-06-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SevereK20
    Я так и не понял, вам нужно чтобы таблица обновилась у обоих пользователей, или только у того, кто их отредактировал? Если только второе, то это даже ADO умеют.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 13:53 12-06-2012
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    XPerformer
    эх, если б только не нужно было постоянно проверять bookmarkValid - всё было б замечательно
    а так это ничем не отличается от запоминания ID или ноды (и всё равно проверять есть запись после обновления или нет)

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 15:41 12-06-2012
    eddoc



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

    Цитата:
    нужно придумывать как быть в таких случаях...  

    ничего придумывать не надо. Вот в этом случае

    Код:
    var bm: TBookmark;
    begin
    if ADOQryTotal.Active then
      begin
      bm:= ADOQryTotal.GetBookmark;
      ADOQryTotal.Close;
      ADOQryTotal.Open;
      if ADOQryTotal.BookmarkValid(bm) then ADOQryTotal.GotoBookmark(bm)  
      ADOQryTotal.FreeBookmark(bm);
      end;
    end;

     
    при удалении записи, на которой стояла закладка, вывалится ошибка "Недопустимая закладка"
     
    А.Подгорецкий предложил свое решение

    Код:
    procedure TMainForm.DeleteActionExecute(Sender: TObject);
    var
      OldId: Integer;
      NextId: Integer;
    begin
      OldId := EmployeeDataSetId.Value;
      EmployeeDataSet.Next;
      NextId := EmployeeDataSetId.Value;
      EmployeeDataSet.Locate('Id', OldId, []);
      with TMainDeleteForm.Create(Self) do
      try
        if ShowModal = mrOk then begin
          OldId := NextId;
          ReOpen;  // переоткрытие набора если запись была удалена (close/open)
        end;
      finally
        Free;
      end;
      if not EmployeeDataSet.Locate('ID', OldId, []) then begin
        EmployeeDataSet.Last;
      end;
    end;
     

    Работает железно, пользуюсь который год

    Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 18:49 12-06-2012
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    eddoc
    так будет чуть лучше, зачем лишний раз локейтится

    Код:
     
         if ShowModal = mrOk then begin  
           OldId := NextId;  
           ReOpen;  // переоткрытие набора если запись была удалена (close/open)  
         end
         else exit;
     


    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 21:18 12-06-2012
    eddoc



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

    Цитата:
    так будет чуть лучше, зачем лишний раз локейтится

    "мопед не мой"
    у меня этот код чуток модифицирован, я привел оригинал

    Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 03:43 13-06-2012
    Aleksandr N

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

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 18:32 25-06-2012 | Исправлено: Aleksandr N, 21:06 25-06-2012
    miwa

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Проверять множество shift:
     
    if ssRight in Shift then showmessage('Нажата правая кнопка');
    if ssMiddle in Shift then showmessage('Нажато колесико');
     ...

    Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 19:41 25-06-2012
    Aleksandr N

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

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 19:47 25-06-2012 | Исправлено: Aleksandr N, 21:07 25-06-2012
    Aladdinych



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как на delphi 7 определить, какой компонент находится под курсором мыши.
    Пробовал ControlAtPos, но он выдает родительский компонент. Картина такая:
    Form1->Panel1->Panel5->ScrollBox1-> Component1. Мне нужно определить находится ли курсор над Component1. А функция ControlAtPos выдает Panel1. Как победить проблему?

    Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 13:10 02-07-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aladdinych
    Эта функция перебирает только непосредственных чилдов того контрола, для которого вызвана. В старших версиях делфи для этого добавлен еще один параметр, а в семерке вы можете попробовать FindDragTarget.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 13:53 02-07-2012
    Aladdinych



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

    Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 14:00 02-07-2012
    SevereK20

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, а подскажите...
    программа на Delphi 7 + firebird
    Мне очень блин понравились алерты) Для события after insert делаю событие POST_EVENT бла-бла-бла.
    Отслеживаю это событие и когда оно наступит - выдаю пользователю сообщение об успешном добавлении и очищаю edit-ы. Все круто,но программой будут пользоваться 2-3 человека. И сообщения приходят всем как только кто-то что-то добавил... как это обойти? чтобы сообщение получал только тот кто действительно добавил.

    Всего записей: 7699 | Зарегистр. 07-05-2010 | Отправлено: 11:51 07-07-2012
    krapotkin

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SevereK20
    Сделать флаг вроде  EventPending
    Сделал изменения - взвел флаг
    Приходит Event - проверить, если флаг поднят, значит нужно "очищать Edit'ы" и сбрасывать флаг
    Остальные тоже получат известие, но проигнорируют его.

    Всего записей: 69 | Зарегистр. 10-01-2006 | Отправлено: 14:34 08-07-2012
    SevereK20

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

    Всего записей: 7699 | Зарегистр. 07-05-2010 | Отправлено: 14:42 08-07-2012
    apnss

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

    Всего записей: 708 | Зарегистр. 26-02-2002 | Отправлено: 15:47 09-07-2012
    data man



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

    Цитата:
    модуль для определения кодировки xlat.pas

    Не знаю такого. Может подойдёт Charset Detector?

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

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 15:55 09-07-2012
    SevereK20

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    apnss
    это ж файл от плагина для тотала Codepage

    Всего записей: 7699 | Зарегистр. 07-05-2010 | Отправлено: 16:20 09-07-2012 | Исправлено: SevereK20, 16:21 09-07-2012
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru