Некорректно отрабатывает поток в Андройде, а именно мерцания экрана
procedure Tspotok.Add;
begin
Form1.foot.Add(Form1.ListBox1);
end;
procedure Tspotok.Add2;
begin
Form1.st.Add(Form1.ListBox1);
end;
procedure Tspotok.Add3;
begin
Form1.st.ListImage.Items[Form1.st.ListvName.Count-1].Bitmap.LoadFromStream(BlobStream);
end;
procedure Tspotok.Execute;
var FDConnection1: TFDConnection;
FDQuery1: TFDQuery;
FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink;
FDGUIxWaitCursor1: TFDGUIxWaitCursor;
j,i:integer;
begin
FDConnection1:=TFDConnection.Create(nil);
FDConnection1.DriverName:='SQLite';
FDPhysSQLiteDriverLink1:=TFDPhysSQLiteDriverLink.Create(nil);
FDGUIxWaitCursor1:=TFDGUIxWaitCursor.Create(nil);
FDQuery1:=TFDQuery.Create(nil);
{$IFDEF ANDROID}
FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'base.db');
{$ENDIF}
{$IFDEF MSWINDOWS}
FDConnection1.Params.Values['Database'] :='E:\Embarcadero\Studio\Projects\NANDBOOK_TWO\base.db';
{$ENDIF}
FDConnection1.Connected:=TRUE;
for I := 0 to 16 do
begin
FDQuery1.SQL.Text:='SELECT * FROM '+Form1.NameBaseconst+' WHERE name LIKE "'+Form1.v+'%"';
FDQuery1.Connection:=FDConnection1;
FDQuery1.Active := True;
FDQuery1.Open;
Synchronize(Add);
Form1.foot.ListvName.Items[Form1.foot.List.Count-1].Text:=Form1.NameB;
if FDQuery1.RecordCount=0 then
begin
Form1.foot.List.Items[Form1.foot.List.Count-1].Visible:=false;
end;
if not FDQuery1.IsEmpty then
begin
//Log.d('LOG-FDQuery1.RecordCount='+FDQuery1.RecordCount.ToString());
for j := 0 to FDQuery1.RecordCount-1 do
begin
Synchronize(Add2);
Form1.st.List.Items[Form1.st.ListvName.Count-1].Parent:= Form1.ListBox1;
Form1.st.ListTag.Items[Form1.st.ListvName.Count-1].Text:=IntToStr(Form1.ListBox1.Count-1);
Form1.st.ListvName.Items[Form1.st.ListvName.Count-1].Text :=FDQuery1.FieldByName('name').AsString;
Form1.st.ListBase.Items[Form1.st.ListvName.Count-1].Text :=Form1.NameBaseconst;
Form1.st.ListID.Items[Form1.st.ListvName.Count-1].Text :=FDQuery1.FieldByName('id').AsString;
BlobStream:=TStream.Create;
BlobStream := FDQuery1.CreateBlobStream(FDQuery1.FieldByName('image'),TBlobStreamMode.bmRead);
Synchronize(Add3);
FDQuery1.Next;
end;
end;
FDQuery1.Close;
FDQuery1.Active := false;
end;
FDConnection1.Connected:=false;
end;
end.
А в осном unite
var
QW:Tspotok;
..
QW:=Tspotok.Create(true);
QW.FreeOnTerminate:=true;
QW.Resume;
Вопрос
sasha
Приветствую!
Некорректно отрабатывает поток в Андройде, а именно мерцания экрана
procedure Tspotok.Add; begin Form1.foot.Add(Form1.ListBox1); end; procedure Tspotok.Add2; begin Form1.st.Add(Form1.ListBox1); end; procedure Tspotok.Add3; begin Form1.st.ListImage.Items[Form1.st.ListvName.Count-1].Bitmap.LoadFromStream(BlobStream); end; procedure Tspotok.Execute; var FDConnection1: TFDConnection; FDQuery1: TFDQuery; FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink; FDGUIxWaitCursor1: TFDGUIxWaitCursor; j,i:integer; begin FDConnection1:=TFDConnection.Create(nil); FDConnection1.DriverName:='SQLite'; FDPhysSQLiteDriverLink1:=TFDPhysSQLiteDriverLink.Create(nil); FDGUIxWaitCursor1:=TFDGUIxWaitCursor.Create(nil); FDQuery1:=TFDQuery.Create(nil); {$IFDEF ANDROID} FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'base.db'); {$ENDIF} {$IFDEF MSWINDOWS} FDConnection1.Params.Values['Database'] :='E:\Embarcadero\Studio\Projects\NANDBOOK_TWO\base.db'; {$ENDIF} FDConnection1.Connected:=TRUE; for I := 0 to 16 do begin FDQuery1.SQL.Text:='SELECT * FROM '+Form1.NameBaseconst+' WHERE name LIKE "'+Form1.v+'%"'; FDQuery1.Connection:=FDConnection1; FDQuery1.Active := True; FDQuery1.Open; Synchronize(Add); Form1.foot.ListvName.Items[Form1.foot.List.Count-1].Text:=Form1.NameB; if FDQuery1.RecordCount=0 then begin Form1.foot.List.Items[Form1.foot.List.Count-1].Visible:=false; end; if not FDQuery1.IsEmpty then begin //Log.d('LOG-FDQuery1.RecordCount='+FDQuery1.RecordCount.ToString()); for j := 0 to FDQuery1.RecordCount-1 do begin Synchronize(Add2); Form1.st.List.Items[Form1.st.ListvName.Count-1].Parent:= Form1.ListBox1; Form1.st.ListTag.Items[Form1.st.ListvName.Count-1].Text:=IntToStr(Form1.ListBox1.Count-1); Form1.st.ListvName.Items[Form1.st.ListvName.Count-1].Text :=FDQuery1.FieldByName('name').AsString; Form1.st.ListBase.Items[Form1.st.ListvName.Count-1].Text :=Form1.NameBaseconst; Form1.st.ListID.Items[Form1.st.ListvName.Count-1].Text :=FDQuery1.FieldByName('id').AsString; BlobStream:=TStream.Create; BlobStream := FDQuery1.CreateBlobStream(FDQuery1.FieldByName('image'),TBlobStreamMode.bmRead); Synchronize(Add3); FDQuery1.Next; end; end; FDQuery1.Close; FDQuery1.Active := false; end; FDConnection1.Connected:=false; end; end.
А в осном unite
var QW:Tspotok; .. QW:=Tspotok.Create(true); QW.FreeOnTerminate:=true; QW.Resume;
Ссылка на комментарий
6 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.