jmp에서 표시 상자를 업데이트하는 방법은 무엇입니까?안녕,
for 루프에서 업데이트하고 싶은 표시 상자(텍스트 상자)가 있습니다.
루프에서 텍스트 상자를 안정적으로 업데이트할 수 없는 것으로 나타났습니다.
처리해야 할 파일이 많고 처리가 불가능하기 때문에 정말 짜증납니다.
항상 드라이브를 물리적으로 검사하여 파일이 처리되고 있는지 확인하십시오.
jmp가 따라잡을 수 있도록 Wait(0)을 사용하고 있습니다. 나는 바쁜 빛을 시도했다
마찬가지로 동일한 문제가 있습니다. 결국 모든 것이 업데이트됩니다.
나는 Wait(1)도 시도했지만 작동하지만 다시는 그렇게 안정적이지는 않습니다.
간단한 텍스트 상자 상태 업데이트를 생성하려면 어떻게 해야 합니까?
귀하의 의견에 감사드립니다!
Re: jmp에서 표시 상자를 업데이트하는 방법은 무엇입니까?네, 본 적 있어요. 진행 표시줄은 깔끔합니다. 그러나 새 창에 팝업이 나타나며 단일 창에서 모든 내용을 수정하려고 하면 제대로 작동하지 않습니다. 그래도 유망합니다. 어떻게든 내 UI에서 작동하게 할 수 있는지 알아보겠습니다. 다른 하나는 언급했듯이 적어도 내 경우에는 작동하지 않는 단순한 텍스트 상자 방법입니다.for 루프에 너무 많은 항목이 있는 경우 디스플레이 업데이트를 위한 시간이 충분하지 않은 것이 문제인 것 같습니다(일부 게시물에서는 Windows가 제때에 표시 상자를 업데이트할 수 없는 것과 관련된 내용에 대해 언급했습니다). 더 오래 기다리면 텍스트 상자 방법이 작동합니다. 대기 시간이 0이면 항상 작동하지 않습니다(즉, for 루프가 끝난 후 모든 것이 업데이트되는 경우가 많습니다).
안정적으로 업데이트할 수 있는 일반적인 진행 상황 추적기를 만들도록 노력하겠습니다. 성공하면 다시 포스팅하겠습니다.
귀하의 도움과 인내심에 감사드립니다!
Re: jmp에서 표시 상자를 업데이트하는 방법은 무엇입니까?이 포럼에서 "진행률 표시줄"을 검색한 결과 다음 두 가지 유용한 링크를 찾았습니다.
다음에서 코드를 확인하세요. @msharp 여기: 중간 테이블 열기 및 닫기 대신 진행률 표시줄을 표시하는 방법
유사한 코드 @SDF1 여기: 모델링을 위한 작은 업데이트/진행 창을 스크립팅하는 방법에 대한 제안
Re: jmp에서 표시 상자를 업데이트하는 방법은 무엇입니까?감사해요. 귀하가 제공한 스니펫은 물론 작동하지만 제가 할 수 있는 것을 찾고 있습니다.
내 UI에 통합하세요. 팝업 메시지를 표시하고 싶지 않습니다. 내 UI에는 많은 요소가 있습니다.
이 상태 기능이 필요하므로 New Window()에 추가할 수 있는 항목을 원합니다.
디스플레이 상자로 사용하고 상태 표시줄로 사용합니다.
나는 다음과 같은 것을 찾고 있습니다 :
cap = "";
some_test_function = Function({},
Show("What?");
for (i = 1, i <= 1000000, i++,
if (mod(i, 1000) == 0,
//Something like this!!! Not working of course.
cap << Set Text("Processing " || char(i) || " records");
wait(0);
);
k = i^3;
l = k * 4 + i^4;
);
);
nw = New Window("test",
bb = Button Box("test caption", some_test_function),
cap = caption("processing"),
);바쁜 표시등도 사용하려고 시도했지만 동일한 문제가 있습니다. 게다가 위의 부분을 수정하면 간단한 계산 대신 for 루프 내부에 테이블 작업이 많이 있을 때 작동할지 모르겠습니다. 어쩌면 기다려야 할 수도 있습니다. 그래서 텍스트 상자 옵션이 붙어 있습니다.
동일한 상태 표시 상자에 액세스할 수 있는 여러 요소가 있는 UI 시나리오에서 사용할 수 있는 다른 솔루션을 높이 평가하겠습니다.
감사해요!
Re: jmp에서 표시 상자를 업데이트하는 방법은 무엇입니까?사용자에게 처리 상태를 표시하는 경우 텍스트 상자 대신 캡션 기능을 사용해 볼 수 있습니다.
for (i = 1, i <= 1000000, i++,
if (mod(i, 1000) == 0,
caption("Processing " || char(i) || " records");
wait(0);
);
k = i^3;
l = k * 4 + i^4;
);
caption(remove);
wait(0);Re: jmp에서 표시 상자를 업데이트하는 방법은 무엇입니까?당신의 의견에 감사드립니다. 사실 나는 이것을 알고 있다. 당신이 나에게 준 코드는 숫자가 포함된 창을 생성합니다.
모든 것이 매우 빠르게 진행되기 때문에 마지막 숫자를 인쇄하는 것 같습니다.
나는 당신이 보여준 것과 같은 것을 하고 있습니다. 내부에 많은 테이블 조작이 포함된 루프와 텍스트 업데이트가 있습니다.
그런 다음 루프가 끝납니다. 신뢰할 수 있다는 말은 for 루프 끝에 업데이트를 넣으면 텍스트가 변경되어야 한다는 뜻입니다.
그 순간.종종 마지막 업데이트만 표시됩니다.
내가 실제로 지금 작동하고 있는 것으로 밝혀진 것은 다른 게시물에서 얻은 것입니다(그 중 상당수를 살펴봤기 때문에 어떤 게시물인지는 모르겠습니다).
따라서 기본적으로 루프에서 텍스트 상자를 만들고 삭제할 수 있습니다. 어떻게 든 텍스트를 업데이트해도 텍스트 상자가 새로 고쳐지지 않습니다. 이는 이상합니다.
어쨌든 현재로서는 새 텍스트로 정확한 위치에 텍스트 상자를 삭제하고 다시 만드는 것이 나에게 효과적입니다.
귀하의 의견에 감사드립니다!
Re: jmp에서 표시 상자를 업데이트하는 방법은 무엇입니까?아마도 "안정적으로 업데이트할 수 없습니다"라는 설명을 이해하려면 더 자세한 내용이 필요할 것입니다. 아래 코드는 아이디어를 보여 주지만 이미 알고 계실 것입니다. 'Wait()'는 일반적으로 JSL에서 피해야 하며 여기서는 다른 처리 기간을 시뮬레이션하는 것뿐입니다.
NamesDefaultToHere(1);
nw = NewWindow("Update Text Box", tb = TextBox(Char(Today())), << sizeWindow(400, 200));
for(t=1, t<=10, t++,
/// Simulate some activity that takes time
delay = RandomInteger(1, 5);
Wait(delay);
// Update the Text Box
tb << setText(Char(Today()));
Beep();
);