|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
В чем разница, шеф говорит первое обращение более правильное. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 10:02 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
el_sh, если не ошибаюсь, первое обращения - стандарт 97 Аксесса. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 10:18 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
CoolMindel_sh, если не ошибаюсь, первое обращения - стандарт 97 Аксесса. я думаю что Вы ошибаетесь насчет стандарта 97. В книшках написано -Ключевое слово Ме указывает на текущую форму или отчет. Поэтому мое мнение что Form можно не указывать , чем меньше текста тем лучше. А вот при обращении к субформе указывается Form. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 10:32 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
CoolMind, т.е. для Акс 2003 разницы никакой? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 10:33 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
el_shCoolMind, т.е. для Акс 2003 разницы никакой? и в 97 прокатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 10:34 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
DzonyB, Нет, тут речь именно о текущей форме. Шеф говорит, что при Me.Form.RecordSource текущая форма обращается к своей же форме и считывает свойство. На мои робкие возражения, сказал, что Me.RecordSource бывает отрабатывает как-то не так. Вот и хочу понять в чем разница... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 10:37 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
el_shDzonyB, Нет, тут речь именно о текущей форме. Шеф говорит, что при Me.Form.RecordSource текущая форма обращается к своей же форме и считывает свойство. На мои робкие возражения, сказал, что Me.RecordSource бывает отрабатывает как-то не так. Вот и хочу понять в чем разница... Так попросите шефа пусть покажет пример где именно прокатывает не та.Я для интереса созвонился с человеком который с 97 года программирует на 97 и сейчас скрепя сердце переходит на 2003 сказал что всегда использует Me без добавления Form. И в книжках пишут тоже самое. Но если не хотите портить с шефом отношения делайте как он сказал. Сказал муха -это вертолет.Значит вертолет. Будьте умнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 10:44 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
el_shНет, тут речь именно о текущей форме. Шеф говорит, что при Me.Form.RecordSource текущая форма обращается к своей же форме и считывает свойство. На мои робкие возражения, сказал, что Me.RecordSource бывает отрабатывает как-то не так. Вот и хочу понять в чем разница... Так это.., F1 на me и на form почитать, разобраться и рассказать шефу. для затравки вопрос шефу: куда обращаемся Debug.Print Me.Form.Form.Form.Form.Form.Form.Form.Form.Form.RecordSource ? (не забываем, что мы в текущей форме;) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 10:56 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Как обратиться к полю формы или подчиненной формы FAQQ3. Обращение к объекту подчиненной формы. Корректная ссылка на свойство подчиненной формы или отчета требует указания полного идентификатора формы c использованием свойства Form элемента управления - подчиненная форма: Forms![Форма1].Controls![Форма2].Form.Controls![Поле1].Value В общем, видимо, начальник путает с обращением к подчинённой форме. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 11:28 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
adv, прикольно))) так их, этих начальников. поздравляю с успешным прохождением 3000 сообщений :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 11:30 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
CoolMind, Да нет, не путеает он. Думаю, это жизненная позиция такая, а может философия... Джони, а с шефом я не спорю (чаще всего), это уже моя жизненная позиция, берегу нервы... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 11:44 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
el_sh, есть такая теория, что места начальников занимают не вполне компетентные люди. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 11:53 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
...гм-гм, я вот тоже всегда считал что это одно и тоже... но, какгрится - "практика критерий истины" , так вот - с "практикой" - что-то не то... Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 11:58 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё, теперь перейти в конструктор и обратно, жми кнопку, смотри результат :) потом создай модуль (t2 - имя формы) Код: plaintext 1. 2. 3. 4. 5. 6. 7.
запусти Раскуриваем :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 12:22 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Да, кстати, привинти к кнопке Debug.Print Me.Properties.Count, Me.Form.Properties.Count. Можешь глянуть поимённо. Это про сомнения :) Я как-то с этим вопросом заморачивался. До конца не нарыл за ненадобностью. Этот пример остался в тестовой базёнке. Поверхностный вывод сделал следующий: me - обращение к контролу формы. Меня сие объяснение устроило и дальнейшие изыскания прекратил по причине лени :) зы. в контексте вопроса ТС, me и me.form это одно и то же. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 12:32 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
adv, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: plaintext 1. 2. 3. 4.
...и о что это должно было сказать ? адреса объектов Me и Me.Form - таки и дальше - разные (в acNormal) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 12:33 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё Код: plaintext 1. 2. 3.
Заметь, как поменялось значение в правом столбце в 1 и 3 строке. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 13:30 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Если правильно думаю, то после перехода в режим конструктора и возвращения обратно в режим окна ObjPtr(Forms!Форма8.Form) начинает ссылаться на объект формы, который был в режиме конструктора. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 13:34 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
DzonyB, авторА вот при обращении к субформе указывается Form. Не всегда:) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 13:50 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
CoolMindЕсли правильно думаю, то после перехода в режим конструктора и возвращения обратно в режим окна ObjPtr(Forms!Форма8.Form) начинает ссылаться на объект формы, который был в режиме конструктора. так - вроде бы как да, но если явно закрыть форму - и открыть по новой - то этого нет ...и "игры" с экземпярами - тоже ничиго непрояснили... Код: plaintext 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.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 13:53 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё ...и о что это должно было сказать ? адреса объектов Me и Me.Form - таки и дальше - разные (в acNormal) вот. Никто и не говорит, что одинаковые. кстати, у меня кариночка другая: Код: plaintext 1. 2. 3.
Видно, что при последовательном acNormal, адрес me одинаков, т. е. обращаемся к одной и той же форме (как к объекту), а Me.Form - разный - разные реализации этой формы (со значением своих свойств). В дезигне объект один, т. к. реализация дезигна может быть одна. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 13:55 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
+ Причём, прилепи на кнопку формы Код: plaintext
в конструктор, обратно, дави, смотри. (можно повторять до посинения :) в конструктор, добавь поле, переходи в режим формы, дави, смотри. Адрес другой, форма другая. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:00 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
зы. Я то не спец по этим делам, так, почти забытые наблюдения, которые случайно всплыли из задворок памяти и начали освежаться. Для полного объяснения нужна тяжёлая артиллерия. Я в этом вопросе от теории далековат, пою что вижу:) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:06 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
adv+ Причём, прилепи на кнопку формы Код: plaintext
в конструктор, обратно, дави, смотри. (можно повторять до посинения :) в конструктор, добавь поле, переходи в режим формы, дави, смотри. Адрес другой, форма другая. дык, я ж это и делал в итоге, только без кнопки воопщем, здаётся мне, что один из этих адресов - это ссылка на элемент коллекции Forms , который уже в свою очередь - ссылается на объект-форму (2-ой адрес) ну это так - типа версия ...подождём, может Бенедикт подойдёт - просвятит )) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:13 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Кстати, у вас результат поинтересней будет. Насчёт того, что из десигна в нормал - реализация формы адрес не меняет, наверное допатчили, это логичнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:16 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Может кто попробует с разными вариантами свойства "Разрешить изменения макета"? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:37 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Guest33Может кто попробует с разными вариантами свойства "Разрешить изменения макета"? в 97м такого св-ва нет ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:52 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё...гм-гм, я вот тоже всегда считал что это одно и тоже... но, какгрится - "практика критерий истины" , так вот - с "практикой" - что-то не то... Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
ПМСМ ни чего удивительного, вы подменили исходную тему между Me.Form.RecordSource и Me.RecordSource нет никакой разницы просто Form это дефолтное проперти класса Form_XXXX. для аналога сравните Debug.Print ObjPtr(Me.Recordset), ObjPtr(Me.Form.Recordset) т.е Ме - это ссылка на объект класса Form_XXXX а сам Form это отдельный объект например создайте в модуле формы паблик проперти и попробуйте к нему обратится me.myproperty и me.form.myproperty ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 14:55 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
khaё...гм-гм, я вот тоже всегда считал что это одно и тоже... но, какгрится - "практика критерий истины" , так вот - с "практикой" - что-то не то... Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
ПМСМ ни чего удивительного, вы подменили исходную тему между Me.Form.RecordSource и Me.RecordSource нет никакой разницы просто Form это дефолтное проперти класса Form_XXXX. для аналога сравните Debug.Print ObjPtr(Me.Recordset), ObjPtr(Me.Form.Recordset) т.е Ме - это ссылка на объект класса Form_XXXX а сам Form это отдельный объект например создайте в модуле формы паблик проперти и попробуйте к нему обратится me.myproperty и me.form.myproperty тоже склонялся к такому выводу, таки Me - ссылка на текущий экземпляр класса, разницы нет и в последующем, но надо отдавать должное тому, что экземпляров может быть и более 1го. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 15:00 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
kha просто Form это дефолтное проперти класса Form_XXXX. для аналога сравните Debug.Print ObjPtr(Me.Recordset), ObjPtr(Me.Form.Recordset) т.е Ме - это ссылка на объект класса Form_XXXX а сам Form это отдельный объект например создайте в модуле формы паблик проперти и попробуйте к нему обратится me.myproperty и me.form.mypropertyО, ну вот и объяснения. Спасибочки. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 15:08 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Озверин, да- экземпляров может быть более одного, в чем противоречие? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 15:08 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
khaПМСМ ни чего удивительного, вы подменили исходную тему между Me.Form.RecordSource и Me.RecordSource нет никакой разницы просто Form это дефолтное проперти класса Form_XXXX. для аналога сравните Debug.Print ObjPtr(Me.Recordset), ObjPtr(Me.Form.Recordset) вот поэтому, я ничего ни про RecordSource, ни про Recordset - ни говорил вопрос был в том - почему ObjPtr(Me), ObjPtr(Me.Form) - возвращают разное значение ответ - вот поэтому Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3.
а сам Form это отдельный объект т.е. Me - это ссылка на текущую форму в виде элемента коллекции Forms а сам Me.Form - ссылка непосредственно на объект форма ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 15:39 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё, я не знаю внутреннего устройства аксес, поэтому может скажу ерунду класс Form_XXXX какбы наследуется от класса ХХХХ , где ХХХХ-имя какой - то формы, по этому используюя Me.property мы можем обращаться к свойствам формы в текущем экземпляре ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 16:02 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё, таки Me - это ссылка на экземпляр класса( коих, может быть и более одного) а Me.Form - это ссылка на обьект "форма".(контролы, модуль и тд) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 16:06 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Сравнение ObjPtr(Me) с ObjPtr(Me.Form) - сравнение тёплого с мягким, так как Me и Me.Form имеют разные типы: ИмяVBAПроекта.Form_XXX и Access.Form. Объект может реализовывать разные интерфейсы, и возвращать ссылки на разные интерфейсы (но при вызове членов этих разных интерфейсов код этих членов будет обращаться к внутренним данным одного объекта). Для иллюстрации покажу на обычных классах. Класс BaseClass: Код: plaintext 1.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 16:18 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Озверинё, таки Me - это ссылка на экземпляр класса( коих, может быть и более одного) а Me.Form - это ссылка на обьект "форма".(контролы, модуль и тд) и то, и другое - ссылка на экземпляр класса я ж уже сегодня "публиковал" свои "игры" с экземплярами вот ещё раз - все значения ObjPtr(F) и ObjPtr(F.Form) (в моём букваре - это называется, цитирую - "указатель на объект(адрес объекта в памяти)" - за точность формулировки - отвечать не берусь, но смысл - очевиден) уникальны Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2010, 16:20 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
БенедиктСравнение ObjPtr(Me) с ObjPtr(Me.Form) - сравнение тёплого с мягким...Ну вот и тяжёлая артиллерия :) Спасибо за разъяснения. зы. авторОбъект может реализовывать разные интерфейсы, и возвращать ссылки на разные интерфейсы (но при вызове членов этих разных интерфейсов код этих членов будет обращаться к внутренним данным одного объекта). Читал это как тост (или как два тоста:). Если бы не пример, так бы и не понял, с кем это разговаривают :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2010, 13:23 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
БенедиктМораль: сравнивайте ссылки, приведённые к одному типу, причём не к Object. а точнее - сравнивать можно только IUnknown ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2010, 17:31 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
adv, "Тост должен быть короткий, как выстрел" (c) Ну, или как дуплет Как настоящий тост не всегда обращён к кому-то лично, так и этот "тост" был обращён к аудитории, сравнивающей указатели разных типов. Изопропил, по спецификации COM - безусловно, и я хотел включить это в пример. Но пришлось бы либо вызывать IUnknown::QueryInterface() самому (а вызов функции по адресу в VBA удовольствие сильно ниже среднего), либо включать в проект библиотеку типов, содержащую описание IUnknown (что во многом предпочтительнее, учитывая наличие, например, отличной библиотеки OLELIB.TLB ). Поэтому, IMHO, приведение к (самому) специализированному типу, хоть и ленивый, но достаточно практичный способ для сравнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2010, 22:08 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Впрочем, к чему эти сложности? Есть же оператор Is. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2010, 22:16 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Бенедикт, вот сделал аналогично Вашему, пример с формой, получил такой же результат (кто бы сомневался)) ) vba Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: plaintext 1. 2. 3. 4.
...но как бы - результат - есть, понимания его - нет если Вас не затруднит, ответьте ещё на несколько вопросов что бы пояснить откуда "растут ноги у непонимания" ещё один небольшой пример delphi Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
вот здесь - мне всё ясно и "прозрачно": объектная переменная - это ссылка на объект - соответственно, так как объект - один и тот же, то и значения этих ссылок (Значения) у всех объектных переменных (вне зависимости от типа) - одинаковые (вот нечто подобное, я ожидал от ObjPtr) хотя адрес - разный но я никак не могу проследить аналогии между результатом в delphi и в vba какой, вообще физический смысл у ObjPtr ? , т.е. - что обозначают все эти "цифири" я ориентировался на то определение ObjPtr, которое уже приводил ё(в моём букваре - это называется, цитирую - "указатель на объект (адрес объекта в памяти)" - за точность формулировки - отвечать не берусь, но смысл - очевиден) (вопрос: неправильное определение? как правильно ?) из чего делал, как мне казалось, вполне логически правильный вывод, что если результат возвращаемый ObjPtr, для 2-х объектных переменных (в частности - для объектного свойства) - разный, то и объекты - разные (вопрос: вывод не правильный ?..ну тут уже понятно - да, неправильный) Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2010, 15:05 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
ё, Про физический смысл у ObjPtr. ObjPtr() возвращает адрес блока памяти такой структуры: Код: plaintext 1. 2. 3.
Код: plaintext 1. 2. 3. 4. 5. 6.
Теперь, быть может не совсем плавно, перейдём к вопросу – как это, результат ObjPtr() разный, а объект (экземпляр компонента) один? Или наоборот, запросили указатели на разные интерфейсы у экземпляра компонента, и получили одинаковые значения этих указателей? Если совсем кратко, такие особенности – детали реализации компонента, и не более, на которые нельзя (формально) закладываться. Теперь подробнее. Пусть мы пишем компонент, который должен реализовать три интерфейса: IUnknown, IX и IY. IX наследует IUnknown и добавляет свой метод x(), IY наследует IX и добавляет свой метод y(). Таким образом, для IUnknown в таблице виртуальных функций должно быть 3 указателя: на QueryInterface(), AddRef(), Release(); для IX – 4: на QueryInterface(), AddRef(), Release(), x(); для IY – 5: на QueryInterface(), AddRef(), Release(), x(), y(). И тут возникает два соблазна (следовало бы взять в кавычки, так как человек редко кодирует эти вещи вручную, здесь речь скорее о компиляторе) на почве оптимизации. Соблазн первый – объединить таблицы виртуальных функций, т. е. иметь 1 массив из 5 элементов, а не 3 в общей сложности из 12-ти. Но это довольно безобидно, как говорилось, таблица виртуальных функций может использоваться совместно. Соблазн второй – объединить указатели на таблицу виртуальных функций, раз уж сами таблицы объединены. Таким образом, даже для такого простого случая взаимоотношений реализуемых компонентом интерфейсов, имеем два экстремальных варианта (а в компоненте могут быть реализованы и промежуточные, и "боковые"): 1) Для независимых таблиц виртуальных функций область памяти экземпляра может описываться структурой: Код: plaintext 1. 2. 3. 4. 5.
Код: plaintext 1. 2. 3.
Честно говоря, не уверен, что ответил на все заданные вопросы, но голова в настоящий момент уже не варит. Лучше задайте ещё раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2010, 04:19 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
Кстати есть разница между таким: Me.OrderList.Form.Requery (так обновляется лучше, надёжнее что-ли) и таким: Me.OrderList.Requery Почему так:) ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2010, 05:00 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
NeboКстати есть разница между таким: Me.OrderList.Form.Requery (так обновляется лучше, надёжнее что-ли) и таким: Me.OrderList.Requery f1The Requery method updates the data underlying a specified form or a control that's on the active form by requerying the source of data for the form . В примере первый случай - requerying the source of data for the form второй - or control Работать должно и так и так, поскольку форма помещена в контрол. (Я пользуюсь первым вариантом ;) А вот, например, Me.OrderList.Recordset работать не будет, поскольку у контрола, в который помещена подчинённая форма нет рекордсета, есть он только у помещённой формы: Me.OrderList.Form.Recordset. Тоже относится и к обращению к контролам ПФ. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2010, 10:55 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
adv, Спасибо:) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2010, 13:04 |
|
Объясните разницу между Me.Form.RecordSource и Me.RecordSource
|
|||
---|---|---|---|
#18+
о, только сейчас заметил, что недоцитировал ф1ф1The Requery method updates the data underlying a specified form or a control that's on the active form by requerying the source of data for the form or control . ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2010, 13:22 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1629950]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
others: | 255ms |
total: | 414ms |
0 / 0 |