Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В каком классе появилось свойство caption 
V
    Опции темы
CodeMonkey
Дата 2.2.2011, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(Snowy @  2.2.2011,  16:01 Найти цитируемый пост)
Хочешь посмотреть, как делают умные люди? Ссмотри сырцы VCL/RTL
А в код джедаев за этим лазить безполезно, ибо там корябают все кому не лень.
И многие из них далеко не умные... 


Особенно GetMem.inc образец кода, ага.

Или DBXJSON.pas

Код
class function TJSONString.Hex(const Digit: Integer): Byte;
var
  HexData: TBytes;
begin
  SetLength(HexData,16);
  HexData[0] := Ord('0');
  HexData[1] := Ord('1');
  HexData[2] := Ord('2');
  HexData[3] := Ord('3');
  HexData[4] := Ord('4');
  HexData[5] := Ord('5');
  HexData[6] := Ord('6');
  HexData[7] := Ord('7');
  HexData[8] := Ord('8');
  HexData[9] := Ord('9');
  HexData[10] := Ord('A');
  HexData[11] := Ord('B');
  HexData[12] := Ord('C');
  HexData[13] := Ord('D');
  HexData[14] := Ord('E');
  HexData[15] := Ord('F');
  Result := HexData[Digit];
end;


Надо полагать, это писали "далеко умные" люди.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Akella
Дата 2.2.2011, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Snowy @  2.2.2011,  15:01 Найти цитируемый пост)
А почему просто не сделать SaveComponent и LoadComponent?


Много компонентов, много свойств. Загрузка формы будет долгая.
PM MAIL   Вверх
MetalFan
Дата 2.2.2011, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Непонятно, почему автор игнорит мое предложение читать/писать св-ва (Caption и по.) через TypInfo...
Ну да ладно.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Keeper89
Дата 2.2.2011, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



MetalFan, ну вот так нас игнорят =)

Вот вариант с API:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    edt1: TEdit;
    btn1: TButton;
    mmo1: TMemo;
    procedure btn1Click(Sender: TObject);
    procedure mmo1Click(Sender: TObject);
    procedure edt1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetText(ObjectHandle: THandle): string;
var
  dwBytesNeeded : DWord;
  pszWindowText : PChar;
begin
  Result := EmptyStr;
  dwBytesNeeded := SendMessage(ObjectHandle, WM_GETTEXTLENGTH, 0, 0);
  if dwBytesNeeded > 0 then
  begin
    GetMem(pszWindowText, dwBytesNeeded + 1);
    try
      ZeroMemory(pszWindowText, dwBytesNeeded + 1);
      if SendMessage(ObjectHandle, WM_GETTEXT, dwBytesNeeded + 1, lParam(pszWindowText)) > 0 then
        Result := pszWindowText;
    finally
      FreeMem(pszWindowText);
    end;
  end;

end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  Caption := 'Button ' + GetText(btn1.Handle);
end;

procedure TForm1.mmo1Click(Sender: TObject);
begin
  Caption := 'Memo ' + GetText(mmo1.Handle);
end;

procedure TForm1.edt1Click(Sender: TObject);
begin
  Caption := 'Edit ' + GetText(edt1.Handle);
end;

end.




--------------------
PM MAIL WWW   Вверх
northener
Дата 3.2.2011, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Snowy @  2.2.2011,  15:01 Найти цитируемый пост)
А в код джедаев за этим лазить безполезно, ибо там корябают все кому не лень.


1. Ну вообще-то я в основном говорил о RXLib. А в её код смотрят даже разработчики Дельфи. О чем свидетельствуют появившиеся не так давно в Дельфи новые модули с функциональностью ряда модулей RxLib и даже с теми же именами.
2. Что же касается именно JEDI, то тут конечно имеются оговорки. И в JEDI может появиться бредовый код. Но нельзя не отметить, что в JEDI есть много ценного, чего в Дельфи пока нет. 


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
CodeMonkey
Дата 3.2.2011, 04:33 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(MetalFan @  2.2.2011,  21:26 Найти цитируемый пост)
Непонятно, почему автор игнорит мое предложение читать/писать св-ва (Caption и по.) через TypInfo...
Ну да ладно. 


Как непонятно? Ведь это использует JEDI, а автора от них тошнит!


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Akella
Дата 3.2.2011, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(MetalFan @ 2.2.2011,  20:26)
Непонятно, почему автор игнорит мое предложение читать/писать св-ва (Caption и по.) через TypInfo...
Ну да ладно.

Ты не прав. Я читал его. И ответил на него: http://forum.vingrad.ru/index.php?showtopi...t&p=2292644
Может я не понял, что ты хотел сказать мне?

Добавлено через 2 минуты и 58 секунд
Цитата(MetalFan @  1.2.2011,  18:21 Найти цитируемый пост)
if GetPropInfo(ASomeComponent, 'Caption') <> nil then
    SetStrProp( AComponent, 'Caption', lSomeNewCaption );



if GetPropInfo(Components[i], 'Caption') <> nil then
    SetStrProp(Components[i], 'Caption', SomeNewCaption);  smile

Добавлено через 3 минуты и 6 секунд
Надо попробовать
PM MAIL   Вверх
CROTishka
Дата 3.2.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 30.7.2009

Репутация: 1
Всего: 2



Ну, можно и не как Посейдон предложил, а через RTTI читать свойство c именем Caption. Работать будет для всех компонент, а не только предопределенных.

Добавлено через 1 минуту и 36 секунд
Цитата

if GetPropInfo(Components[i], 'Caption') <> nil then
    SetStrProp(Components[i], 'Caption', SomeNewCaption);

а, ну я вижу вы сами разобрались.
PM MAIL   Вверх
MetalFan
Дата 3.2.2011, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(Akella @  3.2.2011,  10:25 Найти цитируемый пост)
Надо попробовать 

давно надо было попробовать)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Akella
Дата 3.2.2011, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



да уж, спехом читал всё по диагонали  smile 
PM MAIL   Вверх
Akella
Дата 3.2.2011, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



MetalFan, супер. Спасибо. Вопрос решён.


Вот так сохраняем:
Код

if GetPropInfo(Controls[i], 'Caption') <> nil then
  WriteString(Controls[i].Name, 'Caption', GetStrProp(Controls[i], 'Caption'));


Вот так восстанавливаем:
Код

if GetPropInfo(ParentWinControl.FindChildControl(Sections[i]), 'Caption') <> nil then
  begin
    sCaption := ReadString(Sections[i], 'Caption', GetStrProp(ParentWinControl.FindChildControl(Sections[i]), 'Caption'));
    SetStrProp(ParentWinControl.FindChildControl(Sections[i]), 'Caption', sCaption);
  end;

PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0748 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.