Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (до версии 2009) - часть 5

Автор: JohnSilver182
Дата сообщения: 07.01.2010 19:22
Тону в загадках

В одном проекте работает на Ура


Код: SendMessage(form1.handle, ConstM.msg_Sprav_simple, 66666 , lParam( Pansichar('asas')) );
..................................................
procedure TFormSpravSimple.Requery(var Msg: TMessage);
if Lowercase(trim(String(msg.LParam)))='1' then showmessage('asdas');
Автор: psa1974
Дата сообщения: 07.01.2010 20:47
JohnSilver182
[more=ответил здесь...]
Во-первых, какая версия Дельфи? Во-вторых, из твоего кода вообще ничего не понятно. Какое значение имеет ConstM.msg_Sprav_simple (это важно!)? Потом, я подозреваю, что form1 имеет тип TFormSpravSimple и сообщение ConstM.msg_Sprav_simple действительно получает метод TFormSpravSimple.Requery... Кстати, какой смысл передавать указатель на строку если ты потом проверяешь, на равна ли строка цифре? Короче, лично мне вообще непонятно, что всем этим хотелось сказать...
Но тем не менее, если ты в методе TFormSpravSimple.Requery изменишь вот так, то строку, посланную сообщением ты будешь получать:

Код:
if Lowercase(trim(String(PAnsiChar(msg.LParam))))='1' then
showmessage('asdas');
Автор: JohnSilver182
Дата сообщения: 07.01.2010 22:12
psa1974 Шаман !!!


Добавлено:
Великий ALL Могучь !!!

Вот мой код рожденный в муках для передачи параметры форме (до интерфейсов не дорос)

Если форма модальная то SetStrProp(F, {значение}); работает и в свойстве formN.ONSHOW
все ОК .
Если форма не модальная то в событии Вызываемой формы ONSHOW значение может появиться, а может и нет !!!


Код: procedure TDM.FormLoaderNormal(const FormName:String;mode:integer=-1;code:String='';modal:integer=0;sql:string='');
var
I:integer;
F: TCustomForm;
bExists:boolean;
begin
try
bExists:=false;
for I := 0 to Screen.FormCount - 1 do
if Lowercase('t'+Screen.Forms[i].Name)= Lowercase(FormName) then
begin
bExists:=true;
F:=Screen.Forms[i];
end;

if bExists=false then F := TFormClass(FindClass(FormName)).Create(Application);

if Mode<>-1 then SetStrProp(F, 'idMode', IntTostr(Mode));
if Code<>'' then SetStrProp(F, 'idCode', Code);
if SQL<>'' then SetStrProp(F, 'idSQL', SQL);
try
if modal=1 then f.ShowModal else f.Show;
except
end;

finally
if modal=1 then f.Free;
end;

end;
Автор: Delta RuBoard
Дата сообщения: 08.01.2010 02:08
если использовать TWebBrowser, получение и вывод инфо происходит через

Код: WebBrowser1.Navigate(ComboBox1.Text);
Автор: VadimLou
Дата сообщения: 11.01.2010 16:26
Возможно так:

Загрузить страницу в режиме отключенного отображения рисунков.
Получить распарсенный обьект страницы IHTMLDocument2.
Пробежаться по коллекции рисунков:
function Get_images: IHTMLElementCollection;
И для нужных ссылок поменять HTML код:
IHTMLElement =...
function Set_innerHTML(const p: WideString);
or
IHTMLElement ==> IHTMLImgElement.Set_src(...)

Затем принудительно отобразить рисунок
http://www.bsalsa.com/forum/showthread.php?t=1256
http://www.bsalsa.com/forum/showthread.php?t=859
http://www.bsalsa.com/forum/showthread.php?t=1077
Или получить код исправленной т.о. страницы и загрузить его в TEmbeddedWB(TWebBrowser) с включённым отображением страниц.
Автор: Despised_Icon
Дата сообщения: 11.01.2010 18:04
Добрый вечер, решите пожалуйста задачку на двумерный массив(Delphi 7). задача:Найти минимальный элемент в каждой строке двумерного массива, среди минимумов найти максимум M. Найти максимум в каждом столбце, среди максимумов найти минимум m. Сравнить M и m.
Заранее спасибо
Автор: volser
Дата сообщения: 11.01.2010 20:15
Despised_Icon
Какой из пунктов задачи не получается? Как пробовали делать?
Автор: Despised_Icon
Дата сообщения: 11.01.2010 20:45

Цитата:
Despised_Icon
Какой из пунктов задачи не получается? Как пробовали делать?

реши пожалуйста мне очень надо к завтрашнему дню, а я вобще не понимаю массивы
Автор: victorman2010
Дата сообщения: 12.01.2010 11:54
Здравствуйте.
Есть ClientDataSet, в нем загружена инфа из xml файла. Первая запись это заголовок, последнее поле содержит в себе остальные записи (получается что то вроде дерева). Вопрос: как загрузить это в cxGrid. Привязка полей в гриде указываю через databindidng -> fildname (может можно как то так указать fields -> fild1). Заранее благодарен.
Автор: volser
Дата сообщения: 12.01.2010 12:08
victorman2010
Приведите пример данных. Не совсем понятно что нужно сделать.
Автор: victorman2010
Дата сообщения: 12.01.2010 12:21
<body>
<section type="O" ver="xml1" nobj="66" month="12" year="2009" smena="5">

<fields>
<DateTime>40152.927186412</DateTime>
<Point>0</Point>
<Flags>6</Flags>
<ProductName>???. "Dunhill Gold" ???</ProductName>
<Product>14</Product>
<Iter>0</Iter>
<Card>0</Card>
<Check>21694</Check>
<DatRelease>1</DatRelease>
<DatRequest>1</DatRequest>
<DatS>4800</DatS>
<TaxPrice>0</TaxPrice>
<NDSPrice>0</NDSPrice>
<MinNt>10</MinNt>
<Valuta>1</Valuta>
<VTax>0</VTax>
<Rozn>0</Rozn>
<Skid>1</Skid>
<Discount_abs>0</Discount_abs>
<Plot>0</Plot>
<Kg>0</Kg>
</fields>
<fields>
<DateTime>40152.927558588</DateTime>
<Point>31</Point>
<Flags>6</Flags>
<ProductName>??-92</ProductName>
<Product>3</Product>
<Iter>0</Iter>
<Card>0</Card>
<Check>21695</Check>
<DatRelease>6.7</DatRelease>
<DatRequest>6.7</DatRequest>
<DatS>2470</DatS>
<TaxPrice>0</TaxPrice>
<NDSPrice>376.78</NDSPrice>
<MinNt>10</MinNt>
<Valuta>1</Valuta>
<VTax>0</VTax>
<Rozn>0</Rozn>
<Skid>1</Skid>
<Discount_abs>0</Discount_abs>
<Plot>0</Plot>
<Kg>0</Kg>
</fields>


Добавлено:
Обрабатываю xmlMapper' ом, получается одна строка из 7 полей, последнее поле fields в котором содержаться все записи
Автор: SIgor33
Дата сообщения: 12.01.2010 12:53
Despised_Icon

Цитата:
Найти минимальный элемент в каждой строке двумерного массива

var
a:array[1..10,1..10] of real;
i:integer;
max,max_temp:real;
begin
i:=1;
max:=a[1,1]
while i<=10 do
begin
if a[i,i]>a[i,i+1] then
max_temp:=a[i,i]
else max_temp:=a[i,i+1];
if max_temp>max then max :=max_temp;
inc(i);
end;
Автор: V1s1ter
Дата сообщения: 12.01.2010 13:44
SIgor33
Если уже ответили Despised_Icon, то хоть напишите не уверены, что правильно.
похожее на правду так:

Код:
const
KolStrok = 10;
KolStolb = 20;
var
A: array[1..KolStrok, 1..KolStolb] of real; //исходный двумерный массив
i, j: integer;
Amax: array[1..KolStrok] of real; // результат - одномерный массив
begin
i := 1;
while i <= KolStrok do begin
Amax[i] := A[i, 1];
j := 2;
while j <= KolStolb do begin
if A[i, j] > Amax[i] then Amax[i] := A[i, j];
inc(j);
end;
inc(i);
end;
end.
Автор: victorman2010
Дата сообщения: 12.01.2010 14:54
Перефразирую вопрос:

Есть компонент ClientDataSet, определил поля pl1,pl2,pl3,поле pl3 назначил
DataSet-ом, внутри которого есть поля fld1, fld2

Можно ли сделать так чтобы на форме СРАЗУ было два грида
один с полями pl1,pl2,pl3 (master), второй fld1,fld2 (detail) ?
Автор: volser
Дата сообщения: 12.01.2010 15:38
victorman2010
Посмотрите пример
Автор: victorman2010
Дата сообщения: 12.01.2010 16:20
volser
ОГРОМНОЕ спасибо, все что хотел сделал...
Автор: jonikDk
Дата сообщения: 12.01.2010 17:17

Цитата:
Добрый вечер, решите пожалуйста задачку на двумерный массив(Delphi 7). задача:Найти минимальный элемент в каждой строке двумерного массива, среди минимумов найти максимум M. Найти максимум в каждом столбце, среди максимумов найти минимум m. Сравнить M и m.


во наглость... гнать надо таких !!!
Автор: snike555
Дата сообщения: 12.01.2010 17:45
victorman2010
А почему бы это не сделать 2 DataSet`ами и там уже назначит mastert-detail? Зачем датасет в датасете?
Автор: SIgor33
Дата сообщения: 13.01.2010 08:28
V1s1ter

Цитата:
о хоть напишите не уверены, что правильно

Извените пожалуйста, учту
Автор: victorman2010
Дата сообщения: 13.01.2010 09:36
Есть ClientDataSet, в нем строковое поле типа "40152.9424801042". Вопрос как это преобразовать к нормальной дате, отредактировать, а потом обратно. Или же в гриде где то или в датасэте. Заранее благодарен.
Автор: volser
Дата сообщения: 13.01.2010 16:05
victorman2010

Код: D := TDateTime(StrToFloat('40152.9424801042'))
Автор: victorman2010
Дата сообщения: 13.01.2010 16:23
volser
спс, а как обратиться к определенной колонке cxGrid'a, с целью туда что нибудь записать?
Автор: volser
Дата сообщения: 13.01.2010 17:41
victorman2010
Если нужно работать с данными, то нужно работать с датасетом, а не с гридом.
Автор: victorman2010
Дата сообщения: 15.01.2010 08:31
Доброго времени суток. Свой вопрос я уже задавал, но конкретного ответа так и не получил. Попробую описать ситуацию более подробно:
По нету приходят xml файлы. Моя программа открывает его (вывожу в cxGrid), редактирует и потом обратно записывает в xml. xmlMapper'om созданы два транспорт

файла (.xtr). Использую компоненты: xmlTransform, xmlTransformProvider, ClientDataSet, DataSourse, cxGrid. Суть проблемы: колонка с датой в xml файле имеет

вид 40152.9238028009 (xmlMapper'om никак не преобразуеш), если преобразовать в delphi (cxDateEdit1.Date :=

FloatToDateTime(StrToFloat(ClientDataSet2.FieldByName('datetime').AsString));) то получится 05.12.2009 22:10:16, но это если в cxDateEdit, в грид никак не

получается. Подскажить пож что делать? Заранее благодарен.
Читаю файл:
ClientDataSet1.Close;
XMLTransform1.SourceXmlFile := 'C:\_zx.xml';
XMLTransform1.TransformationFile := 'OXtrans.xtr';
ClientDataSet1.XMLData := XMLTransform1.data;
ClientDataSet1.Open;
Сохраняю файл:
XMLTransformProvider1.XMLDataFile := 'C:\_zx.xml';
XMLTransformProvider1.TransformRead.TransformationFile := 'OXtrans.xtr';
XMLTransformProvider1.TransformWrite.TransformationFile := 'toxml.xtr';
ClientDataSet1.ApplyUpdates(-1);
Автор: volser
Дата сообщения: 15.01.2010 10:51
victorman2010
Какой тип поля в датасете для этой колонки?
Автор: victorman2010
Дата сообщения: 15.01.2010 11:01
Может я чего то не понимаю или не знаю, пробовал создать поле в самом гриде и записывать в него:

procedure TfrmMain.cxGrid2DBTableView1DateTimeGetDataText(
Sender: TcxCustomGridTableItem; ARecordIndex: Integer; var AText: string);
begin
сxGrid2DBTableView1dn.EditValue := FloatToDateTime(StrToFloat(ClientDataSet2.FieldByName('datetime').AsString));
end;

В дата сете создал поле вычисляемое fieldkind - fkCalculated. При загрузке файла поле остается пустым. Может как то я не правильно запись делаю? Коммит для грида может нужно какой то сделать?

Поле создано как fkCalculated и в гриде отображается, запись не происходит...А еще только что заметил, что ручками там ничего не напишеш. Не в нем не в просто текстовым, созданном в самом гриде. Получается дополнительные поля что то блокирует для записи, потому что в тех что загружаются из файла писать (корректировать) можно.
Автор: volser
Дата сообщения: 15.01.2010 11:29
victorman2010
При создании датасета создайте поле типа DateTime и редактируйте его. Зачем создавать строковое поле а потом думать что с ним делать?

З.Ы. Не пишите одно и тоже в двух разных ветках.
Автор: EugeneBoss3
Дата сообщения: 16.01.2010 02:08
Знатоки, подскажите, плиз, как перелить данные из таблиц DBaseIII (OEM) в базу FireBird без использования BDE
Автор: snike555
Дата сообщения: 16.01.2010 04:22
EugeneBoss3
TDBF, ADO подойдут?
Автор: SIgor33
Дата сообщения: 16.01.2010 09:34
EugeneBoss3
еще как вариант можно использовать какой нибудь manger
я пользуюсь для работы EMS SQL Manager for InterBase & Firebird там такой импорт есть

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Clipper 5


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.